Klassen instanz löst sich in luft auf



  • Hi

    Mittels einer methode kann man ja instanzen einer Klasse übergeben:

    public class Klasse1 extends whatEver{
       ...
    }
    
    public class Klasse2 extends whatEver{
    
      klasse1 = new Klasse1();
    
      public Klasse2(){
         klasse1 = new Klasse1()
      }
    
      public Klasse1 getInstOfKlasse1(){
         return klasse1;
      }
    }
    

    wenn eine 3. Klasse nun public Klasse1.... aufruft wird "null" übergeben. ich kann ausschließen das die instanz(also klasse1) direkt auf "null" gesetzt wird.

    wann wird eine instanz "null" gesetzt ? in meinem fall muss das wieder irgend son tolles java-feature sein von dem ich noch nix weiss. vielleicht macht das extends ja irgendwie ärger.

    zusammengefasst: ich übergebe eine instanz einer klasse. dort wo diese ankommt ist sie "null". wie kann das sein ? thx.

    pain



  • okay,
    versuch das bitte nochmal zu erklären

    ich bin jetzt verwirrt

    speziell nachdem du nichts uebergeben hast und dauernd etwas von NULL meinst

    was du vielleicht verwechselst ist ein parameter der NULL enthält und eine methode ohne parameter was nicht dasselbe ist



  • sagen wir so. ich übergebe eine gültige instanz. dort wo die dann ankommt ist die wie durch zauberhand "null" (also instanz defakto nicht vorhanden).
    kann aber auch mit der engine zusammenhängen mit der ich grad arbeite.

    habe momentan alle instanzen von klassen auf static geprügelt. sprich es gibt da ne klassenmethode mit der ich an die instanz rankomme:

    public class testKlasse{
    
      public static Klasse klasse;
    
      public Klasse(){
         klasse = new Klasse();
      }
    
      public static klasse getKlasse(){
       return klasse;
      }
    
      public....//methoden
    }
    

    in jeder beliebigen klasse kann ich ja nun folgendes machen:

    ...
      public static Klasse klasse;
      ...
    
      klasse = Klasse.getKlasse();
    

    da klasse ja eine instanz ist müßte ich damit ja auf alle methoden von Klasse zugreifen können. hab auch ein kurzes Testprojekt gecodet. Dort klappt das auch besten.

    Jetz muss ich nur noch rausfinden warum die gleiche strategie bei meinem richtigen projekt nicht klappt. kann aber wie gesagt auch mit den programmen bzw bibliotheken zusammenhängen mit denen ich arbeite (ne 3dEngine).

    dort besteht dann das problem das, auf obiges beispiel bezogen:

    Klasse.getKlasse(); gleich "null" ist, was ich beim besten willen nicht

    verstehe ( da genau das gleiche in nem beispiel projekt klappt). Falls du irgendne idee hast würd ich mich echt freuen. sitz schon den ganzen tag an dem problem.thx a lot.

    pain



  • und hier wieder was aus der rubrik spaß für jederman:

    fehlergefunden.

    lag an der verf... engine. die main klasse, welche als schnittstelle zur engine fungiert, kann keine instanzen nach außen leiten (richtig gelesen!).
    ich weiss nicht welcher spinner den mist verbrochen hat aber er gehört auf alle fälle geprügelt. hab jetz das ganze prog so umgeschrieben das die klasse halt nur noch sachen bekommt und nix mehr rausgeben muss. funzt einwandfrei.

    also merksatz an alle: wenn du mit java und nochwas zusammenarbeitest, zieh bei nochwas alles in betracht, inclusive verweigerung von instanzenausgabe 🙂

    pain



  • 😕 ηυη βιη ιςh νοεllι∂ νεrωιιrτ ™ 😕



  • okay

    1. eine kleine bitte: versuche dich deutlicher auszudruecken
      ich bin noch immer von deinen beitraegen verwirrt

    2. erklaer das mit den instanzausgaben nochmal! das check ich nicht ganz.

    3. ich kann dir schon erklären warum du eine NULL instanz bekommst

    dein code:

    public class testKlasse{
    
      public static Klasse klasse;
    
      public Klasse(){
         klasse = new Klasse();
      }
    
      public static klasse getKlasse(){
       return klasse;
      }
    
      public....//methoden
    }
    

    der fehler liegt daran das es keine initialisierung der klassenvariable "klasse" gibt. du initialisierst sie erst wenn du ein objekt der Klasse klasse erstellst, was ja eigentlich komplett sinnlos ist da du dann bereits ein objekt hast

    probier mal:

    public class testKlasse{
    
      //initialisierung der static variable bei der deklaration
      public static Klasse klasse = new Klasse();
    
      public Klasse(){
      }
    
      public static klasse getKlasse(){
       return klasse;
      }
    
      public....//methoden
    }
    

    du kannst zum initialisieren auch static-bloecke verwenden (mit static { } )

    nur der konstruktor ist nicht static und dementsprechend wird er erst aufgerufen wenn du eine instanz erstellst, aber nicht wenn du auf static elemente einer klasse zugreifst.

    wie ich glaube ich beim ersten topic schon erwaehnt habe, denke ich das du static noch nicht ganz begriffen hast

    ich empfehle dir die sun java developer seiten unter java.sun.com
    oder ein tutorial im netz das static erklaert

    lg

    gomberl
    wie es mir bereits


Anmelden zum Antworten