java – 静态上下文在枚举定义中
发布时间:2020-05-24 16:46:30 所属栏目:Java 来源:互联网
导读:Java的枚举工具提供的语法糖有时可能会有点混乱.考虑这个例子,没有编译: public enum TestEnum { FOO(foo) { public void foo() { helper(); // - compiler error } }; String name; TestEnum(S
|
Java的枚举工具提供的语法糖有时可能会有点混乱.考虑这个例子,没有编译: public enum TestEnum {
FOO("foo") {
public void foo() {
helper(); // <- compiler error
}
};
String name;
TestEnum(String name) {
this.name = name;
}
public abstract void foo();
private void helper(){
// do stuff (using this.name,so must not be static)
}
}
任何人都可以解释为什么编译器说
这个上下文如何静态? 您可以通过更改对this.helper()的调用来进行编译(这里有一个令人困惑的观点:如果我们真的处于编译器建议的“静态上下文”中,那么“这个”如何工作?)或者增加可见性的帮助()到默认级别.你更喜欢哪个?另外,请随便提出一个更好的问题标题:-) 编辑:我发现some discussion about this – 但没有真正的答案.我的同事认为,this.helper()的作用实际上是一个编译器错误.确实使用较新的Java版本似乎不起作用(尽管super.helper()):“找不到符号帮助()”. (虽然有一些奇怪的事情:在尝试使用不同的Java版本后,我无法让这个.helper()重新编译,其中任何一个…) 解决方法错误消息是误导性的,只是让帮助者保护并且它将工作.protected void helper(){
// can be called from subclasses (such as FOO) since it is not private
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- profiling – java检测中agentmain方法的用途是什么
- Android实现长时间不用APP屏幕变暗
- Java加密算法 AES
- MyBatis通过JDBC数据驱动生成的执行语句问题
- java – 为什么我应该使用url.openStream而不是url.getCont
- 使用java属性文件时的FileNotFoundException
- java.lang.NumberFormatException:对于输入字符串:“2011
- SpringMVC通过邮件找回密码功能的实现
- Java Config等效于conversionService / FormattingConversi
- 为什么这个Java代码没有用#跳过?
