2014-05-02 10 views
6

Ich mag so etwas wie dies tun:Aufruf einen Konstruktor mit einer Bedingung

if (condition) 
    super(foo.class); 
else 
    super(bar.class); 

Aber das Super-Konstruktor hat die ersten im Konstruktor sein. Ist es möglich, dies trotzdem zu tun?

+3

Was ist Ihre Klasse Hirarchie genau? – Sunny

Antwort

11

Angenommen Sie haben die gleiche Superkonstruktor in beiden Fällen sind aufrufen und nur in einem anderen Argument, können Sie einfach die bedingte Operator verwenden:

super(condition ? Foo.class : Bar.class); 
+0

Ist etwas falsch, wenn wir das Klassenobjekt an den Superkonstruktor übergeben und dann die Superklasse damit umgehen, als wenn (Bedingung) etwas tun würde. sonst noch etwas anderes machen? – TheLostMind

+0

@WhoAmI: Das ist eine sehr allgemeine Frage - wir haben keine Ahnung von dem Kontext hier. Es klingt auch wie eine andere Frage. –

+0

Wäre es jedoch nicht sinnvoller, die bedingte Prüfung an der Stelle/Methode zu platzieren, an der die Variable verwendet werden soll ?. – TheLostMind

Verwandte Themen