[java] Het gebruik van het this keyword

Pagina: 1
Acties:

  • xos
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:35
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?

  • Osiris
  • Registratie: Januari 2000
  • Niet online
het this-object slaat volgens mij altijd op het object waarmee je op dat moment aan het kloten bent...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

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:

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 :)

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

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


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Tja, eerlijk gezegt snap ik niet echt wat er niet duidelijk aan is IMO hoor, magoed :D

edit:
Alarmnummer: Goed voorbeeld _/-\o_ Volgens mij is 't zo wel duidelijk :)

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

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 :)

---
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


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
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.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Nielsz 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.
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 ;) )

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
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 ;) )
En dat maakt het minder achterlijk?

  • xos
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:35
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 ;)

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Nielsz schreef op 03 november 2002 @ 13:27:
[...]

En dat maakt het minder achterlijk?
ik vindt het niet achterlijk, waarom zou je iets wat vanzelfsprekend is verplicht stellen? ;)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
wasigh schreef op 03 november 2002 @ 13:29:
[...]

ik vindt het niet achterlijk, waarom zou je iets wat vanzelfsprekend is verplicht stellen? ;)
Je hebt variabelen en objectvariabelen. (juiste bewoording is ff weg)
Je hoort gewoon voor een objectvariabele $this. te zetten. (dikke punt :+ ) Geen halfslachtig gelapswans van "O maar als ik in deze functie nou deze variabele niet instantieer dan zal hij wel voor de objectvariabele gaan."

offtopic:
ik ben lekker aan het zeiken vandaag..

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

$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 >:) )

  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

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
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 :). 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.

JayGTeam (213177)


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

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 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 :?
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.

Maar ik zal het niet meer doen ;)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik gebruik tegenwoordig mooi this. omdat dan praktisch mijn code-insight venster omhoogkomt met alle membervariables/methods B)

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 18-08 22:36
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
   }

}

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 29-08 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

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.


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Diep, diep triest dat die leraar het ook niet uit kan leggen... |:( :X

FireFox - neem het web in eigen hand


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:34
PommeFritz schreef op 04 november 2002 @ 02:10:
Diep, diep triest dat die leraar het ook niet uit kan leggen... |:( :X


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