2016-07-18 19 views
-2

Ist es möglich, die Enum-Methode zu verbergen, hängt von Enum-Variable ab?Enum-Methoden ausblenden Java

enum Row1 { 
    MainRow1() { 
     Row2 getUpg1() { 
      return Row2.UPGR1; 
     } 
     Row2 getUpg2() { 
      return Row2 .UPGR2; 
     } 
     Row2 getUpg3() { 
      throw new EmptyStackException(); 
     } 


    }, MainRow2() { 
     Row2 getUpg3() { 
      return Row2 .UPGR3; 
     } 
    }; 


    Row2 getUpg1() { return null;} 

    Row2 getUpg2() { return null; } 

    Row2 getUpg3() {return null; } 
} enum Row2{...} 

Danach möchte ich Row1, aufzurufen, aber wie kann ich deaktivieren Option Row1.MainRow1.getUpg3?

Antwort

0

Sie können das absolut nicht in Java tun. Alle Instanzen eines Enums sind Objekte derselben Klasse; Es gibt also keine Möglichkeit, dass einige Objekte eine Schnittstelle implementieren und andere nicht.

Theoretisch könnten Sie Code wie

public enum Whatever { 
    A, B; 

    void foo() { 
    if (this == A) { 
     throw new RuntimeException("foo() should not be called on A"); 
    } 

schreiben, aber das wäre eine sehr schlechte Idee.

Sie könnten über das Liskov substitution Prinzip lesen, um eine Idee zu bekommen, warum das ist (dieses Prinzip ist über Schnittstellen für Klassen und Unterklassen; aber im Wesentlichen ist Ihre Idee nicht so viel anders).