作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法从枚举本身设置枚举父类/父类(super class)中保存的变量? (以下内容无法编译,但说明了我正在尝试实现的目标)....
class MyClass{
ObjectType type;
String someValue;
public void setType(ObjectType thisType){
type = thisType;
}
enum ObjectType {
ball{
@Override
public void setValue(){
someValue = "This is a ball"; //Some value isn't accessible from here
}
},
bat{
@Override
public void setValue(){
someValue = "This is a bat"; //Some value isn't accessible from here
}
},
net{
@Override
public void setValue(){
someValue = "This is a net"; //Some value isn't accessible from here
}
};
public abstract void setValue();
}
}
然后,像这样:
MyClass myObject = new MyClass();
myObject.setType(ObjectType.ball);
完成上述操作后,myObject 的“someValue”字符串现在应设置为“This is a ball”。
有什么办法可以做到这一点吗?
最佳答案
嵌套的enum
类型是隐式静态的(参见Are java enum variables static?)。其中包括声明为内部类的 enum
类型,因此它们无法访问外部类的实例字段。
您无法使用枚举
执行您想要执行的操作,您必须将其建模为普通类。
关于java - 从枚举访问父类(super class)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29086798/
我是一名优秀的程序员,十分优秀!