2016-08-09 110 views
-1

Ich habe eine Enumeration wie folgt aus:JAVA, wie von Super auf unbekannte Unterklasse werfen

enum{ 
     attribute(instance of subclass, int); 
     private superclass 
     private int; 
} 

jetzt, wenn ich in den Enum für einen attrubute zu suchen, wenn ich es fand ich tun:

superclass variable=value.getSuperclass(); 

So habe ich eine Superklasse-Variable, die eine Unterklasse Instanz enthält jetzt, ich sollte die Unterklasse-Methode nicht in der Oberklasse-Deklaration verwenden, so sollte ich die Oberklasse in unbekannte Unterklasse zu werfen.

Wie kann ich es tun? Ist es möglich?

+1

posten Sie bitte echten Code, da dieser einen Pseudo-Code geschrieben hat und ich nicht verstehen kann, was Sie brauchen. –

+0

Wenn ich das richtig verstehe, klingt es wie ein Code-Geruch. Haben Sie die Kontrolle über die Superklasse und alle ihre Unterklassen? Wie viele der Unterklassen müssen in dieser Situation Nicht-Superklassenmethoden aufrufen? – JonK

+0

der Enum-Code ist so, das for ist, welche Suche in das enum ist: for (Enum enum: Enum) {enum.getSuperclass) ....}. halbe Unterklassen benötigen die Nicht-Oberklasse-Methode – fedi98

Antwort

0

Sie können den Typ von instanceof Schlüsselwort überprüfen,

if (myObj instanceof SomeClass) { 
    SomeClass someClass = (SomeClass) myObj; 
    someClass.someSomeClassMethod(); 
} 

Aber je nachdem, was möchten Sie erreichen möchten, sollten Sie wahrscheinlich einige Muster verwenden. Im Allgemeinen ist es sinnvoll, Code so zu konstruieren, dass keine Instanz von instanceof und generell keine Typüberprüfungslogik benötigt wird.

+0

Natürlich, aber ich sollte eine switch() -Fall verwenden: und ich Enum verwendet, um dies zu überspringen – fedi98