Ik ben nu een tijdje bezig met java & jsp/servlets. In veel voorbeelden zie ik dat er gebruik wordt gemaakt van het this keyword. In mijn javaboek wordt dit wel behandeld maar ik heb niet het idee dat ik het nu goed snap. Ik heb wat voorbeelden via google gezocht zoals deze. Hierin wordt het dus gebruikt om 2 objecten van dezelfde klasse tegelijkertijd in te stellen. Maar volgens mij kan er meer mee gedaan worden. Mijn leraar kon me het ook niet duidelijk uitleggen
. Kan iemand dit wel aan de hand van misschien wat voorbeelden?
het this-object slaat volgens mij altijd op het object waarmee je op dat moment aan het kloten bent...
Met 'this' verwijs je naar het object waar je in zit, en is soms wel eens handig als je geen onderscheid kan maken tussen lokale variablen en member variablen. vb:
Verder staat er in principe bij het aanspreken van member velden /methodes altijd this voor. Maar je hoeft het gelukkig niet te schrijven
code:
1
2
3
4
5
6
7
8
| class A{
int x;
void setX(int x){
x=x; //gaat niet werken
this.x = x;//nu heb je hem echt toegekend aan de x van A, en niet de x van deze methode.
}
} |
Verder staat er in principe bij het aanspreken van member velden /methodes altijd this voor. Maar je hoeft het gelukkig niet te schrijven
op die manier weet je dus zeker dat je bezig bent met lokale variabelen ipv. globale (correct me if I'm wrong)
---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate
Tja, eerlijk gezegt snap ik niet echt wat er niet duidelijk aan is IMO hoor, magoed 
edit:
Alarmnummer: Goed voorbeeld
Volgens mij is 't zo wel duidelijk 
Alarmnummer: Goed voorbeeld
Alarmnummer, doe je dat altijd zo? Eerst een 'loze' / kleine reply posten en dan gaan editten om deze volledig te maken
Is best irritant als iemand anders ook net een zelfde uitleg zit te tikken als jij bij je edit. Waarom post je niet meteen de volledige 
NOFI
NOFI
---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate
in VB.NET kan ik gewoon me (de equilevant van this) weglaten. Dat vindt ik zo achterlijk. Objectvariabelen horen geweoon altijd met me/this te beginnen, en niet dat je ze af en toe weglaat ofzo.
De me/this zit de compiler er voor jouw wel voor, je moet het alleen gebruiken als het je code leesbaarder maakt of als je te lui bent verschillende namen voor je variabele en je functie parameter te verzinnen (zoals ikNielsz schreef op 03 november 2002 @ 13:23:
in VB.NET kan ik gewoon me (de equilevant van this) weglaten. Dat vindt ik zo achterlijk. Objectvariabelen horen geweoon altijd met me/this te beginnen, en niet dat je ze af en toe weglaat ofzo.
En dat maakt het minder achterlijk?wasigh schreef op 03 november 2002 @ 13:25:
[...]
De me/this zit de compiler er voor jouw wel voor, je moet het alleen gebruiken als het je code leesbaarder maakt of als je te lui bent verschillende namen voor je variabele en je functie parameter te verzinnen (zoals ik)
Jep het is zo wel duidelijk, heb het aan mijn leraar gevraagd en na een uitleg van 15 minuten kreeg ik te horen dat hij het ook niet precies wist. Eigenlijk niks om niet te snappen achteraf
ik vindt het niet achterlijk, waarom zou je iets wat vanzelfsprekend is verplicht stellen?
Je hebt variabelen en objectvariabelen. (juiste bewoording is ff weg)wasigh schreef op 03 november 2002 @ 13:29:
[...]
ik vindt het niet achterlijk, waarom zou je iets wat vanzelfsprekend is verplicht stellen?
Je hoort gewoon voor een objectvariabele $this. te zetten. (dikke punt
offtopic:
ik ben lekker aan het zeiken vandaag..
ik ben lekker aan het zeiken vandaag..
$this snapt mijn Java Compiler niet.
Je moet wel de regels van de taal snappen. Methode variabelen gaan voor object variabelen sim-pel
(we hebben het over een echte taal niet over dat achterlijke PHP
)
Je moet wel de regels van de taal snappen. Methode variabelen gaan voor object variabelen sim-pel
(we hebben het over een echte taal niet over dat achterlijke PHP
this is gewoon een referentie naar de instantie van het object c.q. class waarin je aan het proggen bent.
Je kunt ook this retourneren zelfs. Dan return je een referentie naar het object waarin de retourneer functie zit
Zoals ik probeer duidelijk te maken, is this dus een referentie naar de object c.q. class waarin this gebruikt wordt als keyword
. Dus vandaar dat this.x = x ook werkt in het bovenstaande voorbeeld. Je vult dus de variabele x uit this met de parameter x die meegegeven is bij de functiecall.
Je kunt ook this retourneren zelfs. Dan return je een referentie naar het object waarin de retourneer functie zit
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| class A{ A(){ ... } A geefA(){ return this; // this is dus referentie naar de instantie van //A waarvan de geefA() methode is aangeroepen. } class Programma{ A objectA; .... Programma(){ objectA = new A(); ... } //bla ... public static void main(string[] argv){ A objectB; objectB = objectA.geefA; //betekent dus objectB = this // uit objectA = objectA ... } |
Zoals ik probeer duidelijk te maken, is this dus een referentie naar de object c.q. class waarin this gebruikt wordt als keyword
Omdat ik mijn 1e antwoord zelf wel duidelijk vond, maar ik bedacht me ineens dat een stukje code meer zegt dan lappen tekst, dus vandaar.Spider.007 schreef op 03 november 2002 @ 13:22:
Alarmnummer, doe je dat altijd zo? Eerst een 'loze' / kleine reply posten en dan gaan editten om deze volledig te makenIs best irritant als iemand anders ook net een zelfde uitleg zit te tikken als jij bij je edit. Waarom post je niet meteen de volledige
Maar ik zal het niet meer doen
Ik gebruik tegenwoordig mooi this. omdat dan praktisch mijn code-insight venster omhoogkomt met alle membervariables/methods
Het this keyword kan je ook gebruiken om een andere constructor van de huidige klasse aan te roepen. Bijvoorbeeld :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class MyBeautifulClass
{
private int _x = 0;
private int _y = 0;
MyBeautifulClass(int x, int y)
{
_x = x;
_y = y;
}
MyBeautifulClass(int x)
{
this(x, 42); // Roept nu de andere constructor aan
}
} |
en natuurlijk om bij de variabelen van een outer class te komen
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class Outer { int x; class Inner { int x; void func () { x = Outer.this.x; } } } |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Diep, diep triest dat die leraar het ook niet uit kan leggen...
FireFox - neem het web in eigen hand
PommeFritz schreef op 04 november 2002 @ 02:10:
Diep, diep triest dat die leraar het ook niet uit kan leggen...![]()
Tja, dit vind ik een beetje een loze reply die je beter achterwege laat. Indien je niets functioneel aan het topic kunt toedragen, laat je deze opmerkingen beter achterwege. Daar heeft niemand wat aan.
https://fgheysels.github.io/
Pagina: 1