objecte ohne instanzierung verwenden

Status
Nicht offen für weitere Antworten.
H

hilroy

Gast
Habe folgende Verstaendnisprobleme:

1.
Code:
class A {
  private classB b;

  public A (classB b1) {
    b = b1;
  } // constructor

} // class A
Warum kann ich jetzt b ganz normal verwenden, ohne jemals eine Instanz dieses Objektes angelegt zu haben?
Selbiges Problem habe ich mit einigen anderen Objekten anderer Klassen, die in class A verwendet werden, ohne jemals angelegt zu werden. Wie ist das moeglich?

Thx for help,
hilroy
 
R

Roar

Gast
Auto meinAuto = null;
meinAuto.getFarbe();
denk mal drüber nach: wie soll das gehen? ich hab mir nie ein auto angelegt, ergo hab ich auch keine farbe und es kann mir nix zurückliefern, da fliegt ne exceptino. kein auto, keine farbe.
schnapp dir mal nen schönes OOP buch
 
H

hilroy

Gast
das ist mir schon klar, dass es normalerweise nicht gehen kann... drum frage ich ja ... das Problem ist naemlich ich arbeite grade bestehenden Code durch und es funktioniert, keine Exception, nix...
 

clemson

Bekanntes Mitglied
hmm, du musst ja der methode ein objekt übergeben, und wenn du es schon nicht in der methode erstellst, so erstellst du es eben vorher...

so
Code:
classB cb = new classB();
new A(cb);

oder so
Code:
new A( new classB() );
 

Sky

Top Contributor
hilroy hat gesagt.:
das Problem ist naemlich ich arbeite grade bestehenden Code durch
Benutzt Du eine IDE? Viele bieten Funktionen wie "suche alle Verwendungen" oder "suche alle Deklarationen" u.v.m.
Das hilft oft bei "fremdem" Code
 
H

hilroy

Gast
Noe, also nach Deklarationen zu suchen, hab ich schon versucht, in der Klasse wird dieses Objekt mit Sicherheit nicht angelegt. Ich kanns mir nur so erklaeren, dass irgendwas (mir nicht erklaerbares) passiert, wenn ich das Objekt der anderen Klasse im Konstruktor mitgebe und dann meiner Membervariable zuweise.
 

Sky

Top Contributor
Also, clemson hat doch beschrieben, wie der Aufruf (irgendwo anders) aussieht. Was ist da dein Verständnisproblem ?
 

Bleiglanz

Gesperrter Benutzer
natürlich kannst du in A dein b so verwenden wie du willst

solange nieman new A(null) aufruft ist das auch kein Problem, höchstwahrscheinlich steht irgendwo mal ein

new A(new B())

Warum kann ich jetzt b ganz normal verwenden, ohne jemals eine Instanz dieses Objektes angelegt zu haben?
weil du in einer Klasse arbeitest, die davon ausgeht, dass das B an anderer Stelle mit new erzeugt wird?!

BTW: es könnte auch sein, dass du in einer Library herumpfuscht und also NIE irgendwo ein B erzeugt wird, das machen dann ganz andere Programmierer in ganz anderen Projekten
 
H

hilroy

Gast
Danke fuer eure Antworten, bin gestern ein wenig am Schlauch gestanden wie es aussieht. Die Klasse, die die meisten meiner Objektinstanzen erzeugt, war ziemlich gut versteckt, bin aber noch fuendig geworden.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben