Toon posts:

[Java] Methode uit main klasse aanroepen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb niet echt een probleem maar meer een vraag of ik dit op de goede manier doe.

Ik heb een klasse genaamd Main. In deze klasse wordt de GUI gemaakt waarin een tekstbox en een command zit. (Overigens ontwikkel ik nu wat voor een Samsung telefoon in Java). Als de command wordt uigevoerd wordt een methode aangeroepen binnen dezelfde klasse. In deze methode wordt weer een nieuw object van een andere klasse gemaakt. Deze klasse heet NFC. In de Main klasse zit ook een public methode genaamd 'debug'. Deze debug methode format en append debug informatie (aan de hand van tekst die als argument wordt meegegeven) in de tekstbox.

Nu wil ik ook de debug methode kunnen aanroepen in de NFC klasse. Op dit moment (en dit heb ik in C# ook altijd gedaan) doe ik door in de constructor van NFC een argument Main te zetten. Op het moment dat ik een object van NFC aanmaak in de klasse Main voer ik het woord 'this' in bij dit argument. Dit wordt dan als volgt:

code:
1
NFC nfc = new NFC(this);


In de klase NFC in de constructor heb ik vervolgens dit staan:

code:
1
2
3
4
5
Main main = null;
public NFC(Main main) {
this.main = main;
this.main.debug("Debug informatie");
}


Nu kan ik me voorstellen dat als Java het hele object kopieert dat dit niet goed is voor het geheugengebruik. Indien het puur een referentie is naar het object van Main dan zal het geen probleem zijn lijkt me.

Doe ik dit goed of kan het beter?

Bedankt voor jullie hulp :)

Acties:
  • 0 Henk 'm!

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Laatst online: 14:55
Nu kan ik me voorstellen dat als Java het hele object kopieert dat dit niet goed is voor het geheugengebruik.
Je maakt nergens een nieuw object aan (dmv new), this is gewoon een referentie
Within an instance method or a constructor, this is a reference to the current object

[ Voor 0% gewijzigd door asfaloth_arwen op 11-03-2009 10:36 . Reden: Spelling ]

Specs


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Het is een referentie.

Acties:
  • 0 Henk 'm!

Verwijderd

Je zou de debug methode ook static kunnen maken, dan hoef je ook de referentie niet mee te geven. Maar dit is afhankelijk van wat je debug methode doet.

[ Voor 6% gewijzigd door Verwijderd op 11-03-2009 10:39 . Reden: typo ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke aangezien het een referentie is hoef ik me dus niet druk te maken over geheugenproblemen (althans niet met deze kwestie).
Verwijderd schreef op woensdag 11 maart 2009 @ 10:39:
Je zou de debug methode ook static kunnen maken, dan hoef je ook de referentie niet mee te geven. Maar dit is afhankelijk van wat je debug methode doet.
Klopt maar de debug methode gebruikt een GUI object die niet-statisch is.

Acties:
  • 0 Henk 'm!

Verwijderd

Dat je GUI object niet-statisch is maakt niet uit
Je Main class:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    
    public Main() {
        new GUIClass();
    }
    
    public static void debug(String s) {
        System.out.println(s);
    }
    
    public static void main(String[] args) {
        new Main();
    }
}


Je gui class:
Java:
1
2
3
4
5
public class GUIClass {
    public GUIClass() {
        Main.debug("Debug informatie");
    }
}


Doordat je public static void debug(String s) hebt, kan je deze altijd aanroepen met Main.debug(string)
Zelfs als Main nog nergens bestaan zou hebben.
Pagina: 1