Variablenname mittels Reflexions rausbekommen (als String) ?

RySa

Bekanntes Mitglied
Hi :)

Ich würd gerne wissen, ob es möglich ist, den Variablennamen irgendwie als String "rauszubekommen" (mittels Reflexions ?) Ich habe schon zig Seiten durchgesucht, und in den meisten wurde gesagt, dass es nicht geht, was mich aber wundert. Kann mir da jemand ein Beispiel geben, bzw mich auf eine entsprechende Seite leiten ? Danke im voraus :)
 

RySa

Bekanntes Mitglied
Naja, zum Beispiel ganz einfach so etwas:
Java:
String auto1 = "bmw";

Jetzt bräuchte ich, aus der Variable auto1, den Namen, also "auto1" irgendwie als String haben. Ich habe mal gehört, dass es mittels Reflexions gehen sollte, nur weiß nicht wirklich wie. Die meisten sagen, das die JVM eigene "Variablennamen" vergibt, oder sie erst gar nicht behält
 

VfL_Freak

Top Contributor
Moin,

meinst sowas:
Java:
int iMyInteger = 1899;
String sMyString = <Bezeichner von iMyInteger> ...

Das geht IMHO nicht!

Gruß
Klaus
 
M

maki

Gast
Klassen-, Instanz- oder lokale Variablen?

Grundsätzlich ist es so:
Reflection ist nicht für Anfänger gedacht und wird von diesen auch selten richtig verwendet, wenn du selber damit nicht klarkommst und zu 100% weisst was du da machst, ist es das falsche Mittel.

Was willst du denn eigentlich erreichen?
 

RySa

Bekanntes Mitglied
Danke für die schnellen Antworten.

Allerdings ist mein Lehrer anderer Meinung hier :) Ist fest davon überzeugt dass es geht. Oder aber er wollte mich nur irgendwie beschäftigen, da ich mich sonst langweile :p Ich meine aber auch, dass es doch irgendwie möglich sein muss, an den Variablennamen zu kommen...

EDIT: Das weiß ich auch, und da ich mich nie mit Reflexions beschäftigt habe, will ich das auch nicht produktiv einsetzen, zumindest noch nicht jetzt. Ist halt nur eine Aufgabe, und wollte herausfinden ob es überhaupt möglich ist. Die Rede ist hier von lokalen Variablen. Wie ich an die Klassenvariablen kommen würde, wüsste ich glaub ich sogar. Also nochmal ganz allgemein, ist es möglich an die Namen der lokalen Variablen zu kommen oder nicht ? Und wenn ja, irgendwelche Quellen/Beispiele dafür ?
 
Zuletzt bearbeitet:

_Andi91

Bekanntes Mitglied
Geht natürlich.
Hab mal ein kleines Beispiel dazu geschrieben.

Java:
import java.lang.reflect.Field;

public class ReflectionTest
{
  private String name = "value";
  
  public static void main(String[] args) throws Exception
  {
    ReflectionTest instance = new ReflectionTest();
    
    // holen aller Felder, die in der Klasse deklariert sind (in dem Fall nur eines naemlich name)
    Field[] fields = ReflectionTest.class.getDeclaredFields();
    for (Field field : fields)
    {
      // Zugriff erlauben, da field private ist sonst kommt es zu einer Exception (IllegalAccess)
      field.setAccessible(true);
      
      // holen des wertes des aktuellen Feldes aus der instanz der Klasse
      Object fieldVal = field.get(instance);
      
      // field mit wert "value" gefunden
      if("value".equals(fieldVal))
      {
        // Ausgabe des fieldname ( = Variablenname)
        System.out.println(field.getName());
      }
    }
  }
}

EDIT: Bei lokalen Variablen gehts nicht, dass stimmt.
 

RySa

Bekanntes Mitglied
Danke :p Ist es sonst irgendwie möglich da dran zu kommen ? Also wie ich an die Namen der Klassenvariablen komme, weiß ich. Was ist denn mit Instanzvariablen ?

EDIT: Ah, da hat schon _Andi91 was dazu geschrieben :) Danke dir auch :)
 

xerberuz

Bekanntes Mitglied
Es ist möglich an den Namen der Variable zu kommen. Allerdings nicht mit Reflection. Wenn man den Code mit Debug informationen kompiliert kann man über die debugging Schnittstelle den Namen ermitteln. Ob man das aber wirklich will ist eine andere Frage ;-)

Der Name steht dann in der LocalVariableTable.

"The LocalVariableTable attribute is an optional variable-length attribute of a Code (§4.7.3) attribute. It may be used by debuggers to determine the value of a given local variable during the execution of a method."
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
J GUI-Einstellungen mittels Preferences Allgemeine Java-Themen 6
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
E Videosequenz mittels Java aus Video schneiden Allgemeine Java-Themen 10
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
T Wie rufe ich mittels String-Inhalts eine Methode auf? Allgemeine Java-Themen 3
T Exif mittels Java auslesen Allgemeine Java-Themen 14
A Sudoku mittels Backtracking Problem Allgemeine Java-Themen 6
7 Webseiten mittels Java auslesen Allgemeine Java-Themen 7
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
O Programm mittels Java installieren Allgemeine Java-Themen 15
S Array-Sort mittels Binärsuche Allgemeine Java-Themen 2
J Setter mittels invoice aufrufen Allgemeine Java-Themen 4
S Eingabeprüfung mittels Regexp Allgemeine Java-Themen 5
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
D Einfaches Nutzen von Plugins mittels generischer Methode Allgemeine Java-Themen 3
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
G Graph mittels Punkte erstellen Allgemeine Java-Themen 27
M Problem bei PDF-Anzeige mittels Acrobat Viewer Bean Allgemeine Java-Themen 2
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
G Screenshot mittels robot ausführen Allgemeine Java-Themen 4
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
E import mittels Eclipse Allgemeine Java-Themen 3
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
F Zugriff mittels getObject() oder this.object ? Allgemeine Java-Themen 8
J Tonbalance mittels JMF regeln Allgemeine Java-Themen 3
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K Mittels Generics eine Methode verallgemeinern Allgemeine Java-Themen 2
A FTPS bzw. FTP over SSL mittels Java Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
P E-Mails mittels POP3 abrufen Allgemeine Java-Themen 2
S mail von server mittels mailapi löschen Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben