当我在新的java 8项目中尝试使用与javafx相关的类时,我从eclipse中获得了访问限制错误.到目前为止,我能找到的唯一"解决方案"是告诉eclipse忽略访问限制,但我对此并不满意.错误的一个例子:
Access restriction: The type Pane is not accessible due to
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar
Run Code Online (Sandbox Code Playgroud)
我正在使用Eclipse Kepler和Java 8的Eclipse JDT补丁.
这似乎是与JavaFX不是JavaSE执行环境的一部分有关的问题.
我现在很困惑,因为根据http://en.wikipedia.org/wiki/JavaFX,javaFX是JavaSE的一部分.是否有可能Eclipse没有认识到它是javaSE的一部分?
我试图做的注释看起来像这样
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.FIELD })
public @interface EnumParameter {
Enum<?>[] disallowedValues() default {};
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误“注释属性 EnumParameter.disallowedValues 的类型 Enum[] 无效;仅允许原始类型、字符串、类、注释、枚举或其一维数组”。我打算用它来表明枚举中的某些值对此字段无效。我不知道类型,因为我打算用它来补充 UI 创建,因此可能会遇到任何类型的枚举。
编辑以澄清。
假设我有一个枚举,
enum Direction{
LEFT, RIGHT, BOTH;
}
Run Code Online (Sandbox Code Playgroud)
而我有一块田地,
Direction turnSignal;
Run Code Online (Sandbox Code Playgroud)
我想指出的是,转向灯不能同时具有两者。
@EnumParameter(disallowedValues = {Direction.BOTH})
Direction turnSignal;
Run Code Online (Sandbox Code Playgroud)
我已经意识到,到目前为止这似乎是不可能的。有没有理由不允许这样做?以这种方式使用枚举是否被认为是不好的风格?
假设我在一个非常大的项目中工作,并且注意到一个空的打印行,所以我假设有一个 System.out.println(""); 位于代码中的某处。除了在整个项目中搜索所有出现的 System.out.println 之外,我将如何尝试找出它的位置?