2017-05-30 1 views
0

Hinweis: Ich habe mehrere Informationen über offen (Get) Wert von geschützten Feldern oder Mitglieder einer Klasse gefunden, meine Differenz ist eine Instanz von instanced Objekte zu erhalten ...Java: Offenbaren geschützten Wert von Objekt statisch Klasse mit Casting

Hallo, ich möchte die vorher instanzierten statische innere Klasse Informationen offen zu legen (Objekt, das zuvor erstellt wurde) ...

static public class Outer { 
    static class Inner { 
    protected int number = 0; 
    protected int times = 2; 

    public Inner(int number) { 
     this.number = number; 
    } 
    } 
} 

Outer.Inner oi = new Outer.Inner(8); 

ich möchte den Wert von instanzierten Klasse drucken, weil ich weiß nicht, wie instanziert wurde (welches Argument wurde übergeben).

Wie?

ich etwas dachte ...

class Another extends Outer.Inner { 
    Another(int j) { 
     super(j); 
    } 

    public void submit() { 
     System.out.println("the constructor argument was:" + number); 
    } 
    } 

In anderen Klasse, der mein eigenes Projekt verwende ich ‚oi‘, aber ich brauche seine Informationen zu offenbaren (ich will nicht das ändern Originalklasse) und um herauszufinden, wo das Objekt erstellt wurde.

Gibt es eine Lösung, um dies zu erreichen?

Another a = (Another)oi; 
a.submit(); // I want to print the original argument. 

Antwort

1

Der beste Weg ist wahrscheinlich toString-Methode auf der Inner-Klasse außer Kraft zu setzen (es sei denn, Sie sind bereits toString-Methode für einen anderen Zweck verwendet wird). Dann können Sie einfach eingeben:

System.out.println(oi.toString()) 
+0

Dies ist ein Beispiel ist eine komplexe Klasse und toString(), wo ich etwas erhalten zu erklären, wie: @ 277c68a5 –

+0

Sie so etwas tun könnte und bekommen, was Sie wollen (statt der @ 277 ...): @Override public Zeichenfolge toString() { return "Nummer = {" + Nummer + "}; Times = {" + mal + "}"; } Sie können über Overriding toString() hier lesen: http://javarevisited.blogspot.com/2012/09/override-tostring-method-java-tips-example-code.html#ixzz4iaysj3wS –