Wat is een wrapper-klasse?

Wat is een wrapper-klasse?
Hoe zijn dergelijke klassen nuttig?


Antwoord 1, Autoriteit 100%

Over het algemeen is een wikkelklasse elke klas die “wikkelt” of “inkapselen” de functionaliteit van een andere klasse of component. Deze zijn bruikbaar door een niveau van abstractie te geven van de implementatie van de onderliggende klasse of component; Wrapper-klassen die COM-componenten wikkelen, kunnen bijvoorbeeld het proces van het aanroepen van de COM-component beheren zonder de roepcode ermee te storen. Ze kunnen ook het gebruik van het onderliggende object vereenvoudigen door de betrokken aantal interfacepunten te verminderen; Vaak zorgt dit voor een veiliger gebruik van onderliggende componenten.


Antwoord 2, Autoriteit 39%

Alleen wat het klinkt: een klasse die de functionaliteit van een andere klasse of api in een eenvoudiger of slechts andere API in een eenvoudige klasse of api wikkelt.

Zie: adapterpatroon , facade patroon


Antwoord 3, Autoriteit 23%

Wrapper-klassen bieden een manier om primitieve typen als objecten te gebruiken. Voor elke primitieve, hebben we een wikkelklasse zoals,

int Integer
byte Byte 

Integer en byte zijn de wikkellessen van primitieve int en byte. Er zijn tijden / beperkingen wanneer u de primitieven moet gebruiken als objecten, dus wrapper-klassen bieden een mechanisme als boksen / unboxing.

Concept kan goed worden begrepen door het volgende voorbeeld als

double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();

dus dit is de manier waarop we het wrapper-klassetype ook kunnen converteren naar andere primitieve typen. Dit type conversie wordt gebruikt wanneer u een primitief type naar een object moet converteren en deze ook moet gebruiken om andere primitieven te krijgen. Voor deze benadering moet u echter een grote code schrijven. Hetzelfde kan echter worden bereikt met de eenvoudige castingtechniek, aangezien het codefragment kan worden bereikt zoals hieronder

double d = 135.0;
int integerValue = (int) d ;

Hoewel dubbele waarde expliciet wordt geconverteerd naar een geheel getal, ook wel downcasting genoemd.


Antwoord 4, autoriteit 10%

Een wrapper-klasse hoeft niet per se een andere klasse in te pakken. Het kan een API-class-wrappingfunctionaliteit zijn in b.v. een dll-bestand.

Het kan bijvoorbeeld erg handig zijn om een dll-wrapperklasse te maken, die zorgt voor alle dll-initialisatie en -opschoning, en om klassenmethoden te maken die functieaanwijzers omwikkelen die zijn gemaakt van b.v. GetProcAddress().

Proost!


Antwoord 5, autoriteit 5%

Een wrapper-klasse is een klasse die zich om iets anders heen ‘wikkelt’, net als zijn naam.

De meer formele definitie ervan zou een klasse zijn die het Adapterpatroonimplementeert. Hiermee kunt u één set API’s wijzigen in een meer bruikbare, leesbare vorm. Als u bijvoorbeeld in C# de native Windows API wilt gebruiken, helpt het om deze in een klasse in te pakken die voldoet aan de .NET-ontwerprichtlijnen.


Antwoord 6, autoriteit 5%

Er zijn verschillende ontwerppatronen die wrapper-klassen kunnen worden genoemd.

Zie mijn antwoord op “Hoe verschillen de proxy-, decorateur-, adapter- en brugpatronen?


Antwoord 7, autoriteit 4%

Het kan ook waardevol zijn om op te merken dat in sommige omgevingen veel van wat wrapper-klassen kunnen doen, wordt vervangen door aspecten.

BEWERKEN:

Over het algemeen gaat een wrapper uitbreiden op wat de wrappee doet, zonder zich zorgen te maken over de implementatie van de wrappee, anders heeft het geen zin om de wrappee-klasse uit te breiden of de wrappee uit te breiden. Een typisch voorbeeld is het toevoegen van timinginformatie of logfunctionaliteit rond een andere service-interface, in plaats van deze toe te voegen aan elke implementatie van die interface.

Dit wordt dan een typisch voorbeeld voor Aspect-programmering. In plaats van functie voor functie door een interface te gaan en boilerplate-logging toe te voegen, definieert u in aspectprogrammering een pointcut, wat een soort reguliere expressie is voor methoden, en declareert u vervolgens methoden die u wilt laten uitvoeren voor, na of rond alle methoden die overeenkomen de puntsnede. Het is waarschijnlijk eerlijk om te zeggen dat aspectprogrammering een soort gebruik is van het Decorator-patroon, waarvoor wrapper-klassen ook kunnen worden gebruikt, maar dat beide technologieën andere toepassingen hebben.


Antwoord 8, autoriteit 4%

Wrapper-klasse is een klasse die de andere klasse omhult en de abstractie levert tussen de client en de oorspronkelijke klasse die wordt ingepakt.


Antwoord 9, autoriteit 3%

een wrapper-klasse is meestal een klasse die een object als privé-eigenschap heeft. de wrapper implementeert de API van dat privé-object en kan dus worden doorgegeven als een argument waar het privé-object dat zou doen.

stel dat je een verzameling hebt en dat je een soort vertaling wilt gebruiken wanneer er objecten aan worden toegevoegd – je schrijft een wrapper-klasse die alle methoden van de verzameling heeft. wanneer add() wordt aangeroepen, vertaalt de wrapper de argumenten in plaats van ze alleen door te geven aan de privéverzameling.

De wrapper kan op een verzameling worden gebruikt, kan een verzameling worden gebruikt en het privé-object kan nog andere objecten waarnaar naar verwijzen en het lezen.


Antwoord 10, Autoriteit 2%

Een wikkelklasse is een klasse die wordt gebruikt om een ​​andere klasse in te wikkelen om een ​​laag van indirectionele en abstractie tussen de klant toe te voegen en de oorspronkelijke klasse wordt ingepakt.


Antwoord 11, Autoriteit 2%

Wrapper-klasse is een wikkel rond een primitief gegevenstype. Het vertegenwoordigt primitieve gegevenstypen in hun bijbehorende klasse-instanties, b.v. Een Booleaanse gegevenstype kan worden weergegeven als een Booleaanse klasse-instantie. Alle primitieve wikkellessen in Java zijn onveranderlijk d.w.z. eenmaal toegewezen een waarde voor een wikkelklasse-instantie kan niet verder worden gewijzigd.


Antwoord 12, Autoriteit 2%

Java-programmering biedt wrapper-klasse voor elke primitieve gegevenstypen, om een ​​primitieve gegevenstypen om te zetten om het object van wrapper-klasse te corresponderen.


Antwoord 13

Om een ​​wikkelklasse goed te maken, is geen gemakkelijke baan.
Om een ​​wikkelklasse te begrijpen hoe het is ontworpen door sommige anderen is ook geen gemakkelijke baan.
Omdat het een idee is, geen code.
Alleen als je het idee begrijpt, kun je wrapper begrijpen.


Antwoord 14

Wrapper-klassen kwamen erin om een ​​basisbehoefte aan programmeurs te vervullen – d.w.z. om primitieve waarden te gebruiken waar alleen objecten zijn toegestaan. Omdat hun naam suggereert wikkelklassen omwikkelen rond een primitieve waarde en houd de waarde in een object. Dus, al die plaatsen waar primitieven niet waren toegestaan ​​- zoals generiek, hashmap-sleutels, arraylisten enz. – Programmeurs hebben nu een optie om deze primitieve waarden te bieden als hun bijbehorende wrappertypen.

Bovendien hebben deze wikkeltypen een aantal nutsmethoden voor het converteren van het primitieve type tot overeenkomstige wrappertypen en rug, en ook van strings naar wikkeltypen en terug.

Ik heb een gedetailleerd artikel over wrapper-klassen in een mijn blog geschreven, wat het concept van wrappertypen in de diepte verklaart – http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/
(Openbaarmaking – deze blog is eigendom van mij)


Antwoord 15

Ik heb momenteel een wrapper-klasse gebruikt voor mijn project en de belangrijkste voordelen die ik krijg (slechts één voordeel om de onderwerp uitleg te vergroten):

Exception-handling: mijn hoofdklasse, dat een andere klasse wikkelt, heeft methoden die uitzonderingen gooien als er een gebeurt, dus ik heb een wrapper-klasse gemaakt die de uitzonderingen afhandelt en onmiddellijk aanmeldt. Dus, in mijn hoofdbereik, is er geen uitzonderingsbehandeling. Ik bel gewoon een methode en doe iets.

eenvoudig gebruik: ik kan het object eenvoudig initiëren. Normaal gesproken wordt het initiëren van fase geconstrueerd van veel stappen.

Code-leesbaarheid: wanneer een andere programmeur mijn code opent, lijkt de code heel duidelijk en gemakkelijk te manipuleren.

De details verbergen: als u een klasse genereert die een andere programmeur gaat gebruiken, kunt u de details in wikkelen zoals “Foutbehandeling, uitzondering, loggen van berichten en enz.” Zodat de programmeur niet zal zijn moet de chaos omgaan, gebruikt gewoon gewoon de methoden.


Antwoord 16

Een wikkelklasse is een klasse die het enige doel dient om iets vast te houden en er een functionaliteit aan toe te voegen.
In Java sinds de primitieven (zoals inten, drijvers, tekens …) zijn geen objecten, dus als u ze als een wilt behandelen, dan moet u een wrapper-klasse gebruiken.
Stel dat je een vector van inten wilt maken, het probleem is dat een vector alleen objecten geen primitieven bevat. Dus wat je gaat doen, is alle inten in een getal-wrapper zetten en dat gebruiken. Voorbeeld:

int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();

Antwoord 17

een wrapper is een klasse die wordt gebruikt om te communiceren tussen twee verschillende applicaties tussen verschillende platforms

Other episodes