Java 隐藏枚举方法

Java 隐藏枚举方法,java,methods,enums,overriding,Java,Methods,Enums,Overriding,是否可以根据枚举变量隐藏枚举方法 enum Row1 { MainRow1() { Row2 getUpg1() { return Row2.UPGR1; } Row2 getUpg2() { return Row2 .UPGR2; } Row2 getUpg3() { throw new EmptyStackException(

是否可以根据枚举变量隐藏枚举方法

   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{...}

在此之后,我想调用
Row1
,但如何禁用选项
Row1.MainRow1.getUpg3

在Java中绝对不能这样做。枚举的所有实例都是同一类的对象;因此,让某些对象实现接口是不可能的,而让其他对象实现接口是不可能的

从理论上讲,您可以编写如下代码

public enum Whatever {
  A, B;

  void foo() {
    if (this == A) {
      throw new RuntimeException("foo() should not be called on A");
    }
但那真的是个坏主意

您可能希望阅读有关该原则的内容,以了解其原因(该原则是关于类和子类的接口;但本质上,您的想法并没有太大不同)