使用Enum-value而不使用Enum-classname

Ran*_*ung 13 java inheritance enums class

我在接口中使用静态枚举,并希望在扩展类中使用它.

我有以下接口:

public interface StateSupport {
    public static enum State {
        NEW,
        UNCHANGED,
        UPDATED;
    }
}
Run Code Online (Sandbox Code Playgroud)

public interface Support extends StateSupport  {
    public void do(Context arg0);
}
Run Code Online (Sandbox Code Playgroud)

最后是一堂课

public class MyClassUtil implements Support {
    public void do(Context arg0){ 
        MyClass obj = new MyClass(NEW);
    }
Run Code Online (Sandbox Code Playgroud)

}

关键是我不想写"State.NEW",只是"新":-)

那么如何在不使用枚举名称的情况下做到这一点.有办法吗?

Kai*_*Kai 24

您可以使用静态导入:

import static com.yourpackage.StateSupport.State.NEW;
import static com.yourpackage.StateSupport.State.UNCHANGED;
import static com.yourpackage.StateSupport.State.UPDATED;
Run Code Online (Sandbox Code Playgroud)

或简而言之(气馁):

import static com.yourpackage.StateSupport.State.*;
Run Code Online (Sandbox Code Playgroud)

  • 不鼓励导入*,因为它的含义会随着其他类的更改而改变,并且因为只是检查符号所在的编译单元,您无法知道符号的含义. (4认同)
  • `com.yourpackage.StateSupport.State.*`也可以. (3认同)