Java BlueJ: Namen der Instanz herausfinden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java BlueJ: Namen der Instanz herausfinden

    Hallo, bin mit BlueJ&Java noch nicht so vertraut (bzw. generell mit Programmiersprachen ) und hab da mal ne Frage:
    Mit welchem Befehl kann man in BlueJ den Instanznamen aufrufen, den man der betreffenden Instanz bei der Erstellung im BlueJ-Interface gegeben hat? Wenn ich "this " anwende wird immer nur der Name ausgespuckt, den Java der Instanz gegeben hat. z.B.:
    Der Instanz hab ich bei der Erstellung im BlueJ den Namen Bö gegeben, "this " gibt mir "Ebene@5c998a" aus, ich brauch aber Bö als Ausgabe.
    Kann mir wer helfen?
  • Ich glaube was blubb meint ist etwas anderes, und das müsste sich auch ohne Code beantworten lassen. Wenn ich die Antwort mal wüsste...

    Aber ich versuch mal zu erklären wie ich das Problem verstehe:
    Angenommen wir haben eine Klasse "Auto" und erzeugen jetzt mehrere Objekte davon, eins mit namen "BMW", eins mit "Fiat", eins mit "Opel", etc.
    blubb möchte nun in der Klasse "Auto" eine Methode ein bauen die ihm den Namen des Objekts zurück gibt, also "BMW", oder "Audi", etc...

    Die einfachste Möglichkeit, die mir dazu ein fällt, ist den Namen des Objekts beim erstellen in einer String-Variablen zu speichern.
  • "Angenommen wir haben eine Klasse "Auto" und erzeugen jetzt mehrere Objekte davon, eins mit namen "BMW", eins mit "Fiat", eins mit "Opel", etc.
    blubb möchte nun in der Klasse "Auto" eine Methode ein bauen die ihm den Namen des Objekts zurück gibt, also "BMW", oder "Audi", etc..."

    Genau das mein ich, danke.
  • Warum erstellst du nicht Klassen die von Auto erben.
    Dann kannst du problemlos den Klassennamen mit this.getClass().getName() herausfinden.

    Den Namen der Variablen in einer Programmierlogik zu verwenden, macht wirklich keinen Sinn. (...und ist nur über die Reflection API möglich)
    Schilder uns doch mal was du mit der Information vor hast. Vielleicht ein Denkfehler? Es geht sicher auch sauber zu lösen.
  • Ich glaube das Problem warum er nicht einfach mit Vererbung arbeitet, könnte darin bestehn das der Name erst zur Laufzeit bekannt ist.
    Angenommen du hast in deinem Programm einen Button wo drauf steht "Neues Auto eintragen", du klickst drauf und ein Fenster erscheint, so sachen eintragen kannst wie:
    "Marke:"
    "Model:"
    "Hubraum:"
    "Leistung:"
    "Farbe:"
    etc...
    und mit diesen Angaben wird dann ein neues Objekt der Klasse Auto erstellt, und dieses Objekt hat dann eben den Namen der Marke.
    Aber wie gesagt, ich würde dafür einfach eine Instanz-Variable verwenden, ist am einfachsten zu handhaben.
  • Hmmm... Ich fürchte das Problem lässt sich so gar nicht lösen. Der Punkt ist folgender: Das BlueJ-Interface ermöglicht und erzwingt es, jeder Instanz die man über dieses Interface erstellt einen Namen zu geben. Dieser Name wird dann von BlueJ für die graphische Repräsentation der Instanzen genutzt. Aber er wird nicht vom eigentlichen Java-Programm gespeichert. BlueJ selbst zeigt den Namen nur in der graphischen Repräsentation der Instanzen an, BlueJ bietet aber keine Möglichkeit, diesen Namen über Befehle aufzurufen. Ich wollte einfach, dass ich den BlueJ-Namen in System.out.println verwenden kann, z.B. als: Schnittpunkt der gerade "Hans" mit der ebene "otto". Da ich aber mit Java-Code wohl nicht auf den Blue-J Namen zugreifen kann wird das wohl nix.
    Das Problem mit der Erstellung eines Datenfeldes für Namen ist, dass ich im BlueJ-Interface bei der Instanzerstellung dann zwei solche Felder ausfüllen müsste, einmal für den BlueJ-Namen, dann für das von mir erstellte Datenfeld– Was einfach nervig wäre.
    Also, so gesehen sollte ich mir vielleicht einfach ne passendere Entwicklungsumgebung für Java hohlen...
    Kann mir wer eine empfehlen? Und vielen Dank für die Hilfe bis hierhin-
  • Eclipse oder NetBeans.
    Aber damit wirst du dein Problem nicht lösen, denn die grafische Anzeige wie in BlueJ gibts da, meines wissens nach, garnicht. Du kannst also nichtmal einen Namen für deine Objekte vergeben.
    Ist auch überflüssig, man Programmiert ja nicht für eine Entwicklungs-Umgebung, sondern für eine spätere Anwendung außerhalb der Entwicklungs-Umgebung, und da hat man dann eh keinen Zugriff auf die Namen der Objekte mehr. Von daher würde ich von vorn herein das Namens-Feld bei BlueJ garnicht erst ausfüllen, sondern einfach den Standard-Namen lassen, und "Hans" und "Otto" lieber in das Feld für die Variable eintragen.