[Java] ref van interne class naar 'normale' class

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Stel dat ik het volgende heb
code:
1
2
3
4
5
6
7
8
public class A{

   class B{
    public void doIets(){
        //ik heb hier A nodig..
    }
   }
}

Hoe kan ik vanuit B weer bij A komen? this werkt natuurlijk niet want this in B is B. Dat je A mee kan geven als argument aan B had ik al bedacht :) Maar ik vraag me af of je nog op een andere manier bij A kan komen vanuit B.

Verwijderd

ja dat kan als volgt

public class A
{
public String temp;

public class innerA
{
public String temp;
public innerA()
{
this.temp = (A(A.this)).temp;
}
}
}

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op maandag 25 februari 2002 19:44 schreef Nielsz het volgende:
RTFM >:)
http://forum.javahova.net/topic.php?id=311
;)
Je moet even beter opletten, is namelijk een volledig ander probleem.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 25 februari 2002 19:46 schreef Alarmnummer het volgende:

[..]

Je moet even beter opletten, is namelijk een volledig ander probleem.
Oja, damn :(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op maandag 25 februari 2002 19:43 schreef BooleanErik het volgende:
ja dat kan als volgt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class A
{
  public String temp;
  
  public class innerA
  {
     public String temp;
     public innerA()
     {
         this.temp = (A(A.this)).temp;
     }
  }
}
Het werkt ook nog :)

  • grhmpf
  • Registratie: December 2000
  • Laatst online: 29-05-2022

grhmpf

Android <3

oei wat eng, waarom werkt het eigenlijk ? Ik zie het (nog) niet.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op maandag 25 februari 2002 20:20 schreef grhmpf het volgende:
oei wat eng, waarom werkt het eigenlijk ? Ik zie het (nog) niet.
code:
1
2
3
4
5
6
7
8
public class A{

   class B{
    public void doIets(){
       functieOpA(A.this);
    }
   }
}

Misschien dat dit voorbeeldje het iets duidelijker maakt.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

gewoon A.this.temp voldoet ook :)

ik vraag me trouwens wel af hoe je bij members van A kunt komen als je een instantie van een A.B hebt...
code:
1
2
3
4
5
6
7
class C
{
    public func (A.B b)
    {
      // hoe kom ik bij A.temp vanuit b ?
    }
}

ik vraag me af of het sowieso wel kan :) Je kan natuurlijk wel een functie in B maken die z'n A teruggeeft:
code:
1
2
3
4
5
// in class A.B :
A getA ()
{
    return A.this;
}

en dan via b.getA () de members van A opvragen

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.


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 02-08 20:09
Instantie van klasse 1 als parameter in de constructor van klasse 2 meegeven. Object van klasse 1 in klasse 2 in de initialisatie aan maken, en in de constructor van klasse 2 het object in de meegegeven parameter overzetten. Dan kun je eenvoudig de methodes van het object van de andere klasse opvragen.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op maandag 25 februari 2002 20:40 schreef Mastermind het volgende:
Instantie van klasse 1 als parameter in de constructor van klasse 2 meegeven. Object van klasse 1 in klasse 2 in de initialisatie aan maken, en in de constructor van klasse 2 het object in de meegegeven parameter overzetten. Dan kun je eenvoudig de methodes van het object van de andere klasse opvragen.
Je bedoelt dit?
code:
1
2
3
4
5
6
7
8
9
10
11
12
public class A{

   class B{
    private A a;
    public B(A a){
       this.a = a;
    }
    public void doIets(){
       functieOpA(a);
    }
   }
}

Want dan moet je mijn 1e berichtje nog even nalezen.

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 02-08 20:09
Nee, ik ga er van uit dat het twee losse klassen zijn, ik reageerde op mijn voorganger.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Heej.. jij zit ook op de hanze HIO?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 25 februari 2002 20:47 schreef Mastermind het volgende:
Nee, ik ga er van uit dat het twee losse klassen zijn, ik reageerde op mijn voorganger.
uiteraard zijn het niet 2 losse klassen, want daar ging de topic ook niet over :) (ik heb het ook over klasse A.B, wat dus aanduidt dat B een inner class van A is)

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.

Pagina: 1