Per Reflection auf (method) local inner class zugreifen?

Novanic

Bekanntes Mitglied
Hi,

ich schreibe gerade einen Code-Parser mittels JDT/AST und bin dabei über ein Konstrukt gestolpert, dass sich wohl "local inner class" nennt. Damit ist eine deklarierte Klasse innerhalb einer Methode gemeint.

Hat jemand eine Idee wie man darauf per Reflection zugreifen kann, sodass man sich davon ein Class-Objekt holen kann? In der Theorie sollte das möglich sein, weil es ja eigentlich nichts anderes als eine anonyme Klasse ist (darauf kann man mit Class.forName("Klasse$1")) zugreifen. Bisher konnte ich zu dem Konstrukt aber kaum Informationen finden.

Hier ein Code-Beispiel:

Code:
public class Klasse
{
  public void method() {
    class LocalInnerKlasse {

    }
  }
}

Danke schonmal. :)

Gruß Nova
 

Anti-Banane

Gesperrter Benutzer
ich muss sagen : ich bin erstmal überrascht das das SO überhaupt compiled

gucke ich mir allerdings das ergebnis an : Klasse$1LocalInnerKlasse wird es schon merkwürdig
jage ich es dann noch durch einen de-compiler kommt ne normale neste class bei raus

Code:
public class Klasse
{

    public Klasse()
    {
    }

    public void method()
    {
    }

    // Unreferenced inner class Klasse$1LocalInnerKlasse
    class _cls1LocalInnerKlasse
    {

        final Klasse this$0;

            _cls1LocalInnerKlasse()
            {
                this$0 = Klasse.this;
                super();
            }
    }

}

wobei ich hier eher davon ausgehen würde das mein de-compiler JAD1.5.8g damit nicht umgehen kann


zum anderen : WOFÜR ?
ich kann mir jetzt erlich keinen anwendungsfall einfallen lassen in dem es sinn machen würde eine innere nested class nur innerhalb einer methode zu erzeugen
 

Novanic

Bekanntes Mitglied
Hi,

danke, mit dem Klassennamen hinter der anonymen Klasse funktioniert es. :) Also bei dem Beispiel mit Class.forName("Klasse$1LocalInnerKlasse").

Ich war auch überrascht, dass das möglich ist und ich habe auch fast 10 Jahre Java-Erfahrung. ;-)

Ich bin da vor kurzem drüber gestolpert als ich mit meinem Code-Parser ein anderes Projekt analysiert hatte. Man kann daraus auch problemlos eine normale innere Klasse machen. Mir fällt zu dem Konstrukt nur ein sinnvoller Anwendungsfall ein: Man kann die Sichtbarkeit einer Klasse damit auf eine Methode reduzieren. Wenn man darüber aber mal kurz nachdenkt, macht das eigentlich auch wenig Sinn, weil man dann vermutlich vorher schon etwas falsch gemacht hat. Die Klasse oder Methode ist vermutlich einfach zu groß/lang, wenn man wirklich das Bedürfnis hat die Sichtbarkeit einer Klasse auf eine Methode zu reduzieren. Die Unterteilung der Klasse in mehrere Klassen wäre wohl sinnvoller. :)

Danke für die schnelle Antwort.

Gruß Nova
 
Zuletzt bearbeitet:

Anti-Banane

Gesperrter Benutzer
naja ... wozu bitte den scope einer klasse auf eine methode beschränken ? um WAS damit zu machen ? daten zu halten ? was zu berechnen ? wofür ... am ende der methode muss man die daten eh rausholen und zumindest das objekt wenn nicht die ganze klasse sind dann ungültig ... dann kann man den code auch einfach so direkt in die methode schreiben



meiner meinung nach eher n bug und sollte eigentlich zu nem compiler-fehler führen ... naja ... wer weis warum das überhaupt so compiled ... und warum mein de-compiler so einen murks draus macht
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Reflection-Method Hook? Allgemeine Java-Themen 14
B Reflection gone wrong? Allgemeine Java-Themen 21
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Reflection - Abprüfen von Klasseneigenschaften Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
A Reflection Problem Allgemeine Java-Themen 15
K Generic class und Reflection Allgemeine Java-Themen 2
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
E Reflection? Frage Allgemeine Java-Themen 4
B Reflection, invoke dynamisch befüllen Allgemeine Java-Themen 3
T Reflection Allgemeine Java-Themen 11
G Klassen Cast auf Argumentenklasse via Reflection? Allgemeine Java-Themen 10
H Collections Generics und Reflection Allgemeine Java-Themen 6
TheWhiteShadow Reflection-Lösung für Objektkopien Allgemeine Java-Themen 3
B Reflection: getMethods schlägt fehl (NoClassDefFoundE)) Allgemeine Java-Themen 15
P Reflection "Cast" Allgemeine Java-Themen 5
D Reflection-Performance Allgemeine Java-Themen 7
S Reflection und Generic Allgemeine Java-Themen 9
W Reflection -> getMethod bei optionalen Parametern Allgemeine Java-Themen 4
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
M Probleme mit Reflection Allgemeine Java-Themen 10
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
G Java Reflection Allgemeine Java-Themen 11
N Reflection: NoSuchMethodException obwohl Methode existiert Allgemeine Java-Themen 2
brunothg Problem mit Reflection Allgemeine Java-Themen 6
M reflection in inner classes Allgemeine Java-Themen 7
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
V Reflection - Field-Instanz und Annotations Allgemeine Java-Themen 6
Y Reflection und "extends" Schlüsselwort Allgemeine Java-Themen 3
R Reflection Problem Allgemeine Java-Themen 4
N getName() of reflection Object Allgemeine Java-Themen 4
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
M Reflection Queue auslesen Allgemeine Java-Themen 6
N generic reflection Allgemeine Java-Themen 5
megachucky Java Reflection -> versteckte Felder finden? Allgemeine Java-Themen 3
MQue Reflection Exception Allgemeine Java-Themen 11
R Problem mit Reflection und Generics Allgemeine Java-Themen 3
ruutaiokwu Per Reflection membervariablen überschreiben / zuweisen / nullen Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
R Reflection: Membervariablen-Initialwerte Allgemeine Java-Themen 4
G Reflection Allgemeine Java-Themen 6
V reflection in java 5 und 6 Allgemeine Java-Themen 2
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
G [Reflection + WebService] Methodenaufruf an einem Proxy Allgemeine Java-Themen 11
T Parameternamen mit Reflection-API Allgemeine Java-Themen 14
M reflection mit parametern Allgemeine Java-Themen 8
M Reflection Frage Allgemeine Java-Themen 7
G Code vereinfachen bei Reflection Allgemeine Java-Themen 4
I reflection get inner static classes Allgemeine Java-Themen 2
C Reflection Allgemeine Java-Themen 12
Y Reflection - wie kann ich eine Methode benutzen Allgemeine Java-Themen 4
Y Reflection - wie anwenden/benutzen bei folgendem Problem Allgemeine Java-Themen 3
P Java Reflection API - ResultDataModel ? Allgemeine Java-Themen 3
R Object Dynamisch erzeugen (Reflection API) Allgemeine Java-Themen 22
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
G Reflection: aktuelle bzw umschliessende Methode? Allgemeine Java-Themen 7
G per Reflection auf private Klassenattribute zugreifen? Allgemeine Java-Themen 9
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
M per reflection private attributsnamen auslesen Allgemeine Java-Themen 3
G Interface - Klassen implementieren das - Reflection ok? Allgemeine Java-Themen 4
C Reflection Problem! Allgemeine Java-Themen 2
G Object cast via Reflection Allgemeine Java-Themen 8
T Reflection und Typsicherheit Allgemeine Java-Themen 5
Q Umgang mit Reflection Allgemeine Java-Themen 4
S reflection Allgemeine Java-Themen 12
X Reflection performant? Allgemeine Java-Themen 11
M Reflection und Serializable Allgemeine Java-Themen 5
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
the[V]oid Primitive Arrays per Reflection erzeugen? Allgemeine Java-Themen 2
W Package via Reflection parsen Allgemeine Java-Themen 4
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
M reflection Integer != int ? Allgemeine Java-Themen 3
M reflection invoce Allgemeine Java-Themen 3
K Reflection:Zugriff auf innere Klassen Allgemeine Java-Themen 4
N NoSuchMethodException bei Reflection-Versuch, aber warum? Allgemeine Java-Themen 3
byte Methodenaufruf per Reflection? Allgemeine Java-Themen 2
M Generics und Reflection Allgemeine Java-Themen 3
M Array per Reflection manipulieren Allgemeine Java-Themen 5
M Klassen von ausserhalb des Jars per Reflection nachladen Allgemeine Java-Themen 2
thE_29 Reflection Allgemeine Java-Themen 6
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
B Frage zu Reflection Allgemeine Java-Themen 3
V Reflection - Problem Allgemeine Java-Themen 3
clemson Reflection Interface Allgemeine Java-Themen 4
G mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
N Reflection: Feststellen ob eine Klasse abstract ist Allgemeine Java-Themen 3
B Reflection Allgemeine Java-Themen 10
C Reflection und variable casten ! Allgemeine Java-Themen 10
C Reflection - Kurze Beschreibung? Allgemeine Java-Themen 3
F Frage zum Thema Reflection Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben