【发布时间】:2011-11-10 22:35:46
【问题描述】:
我知道过去有几个关于在 eclipse 中编译但不在命令行中编译的问题,但我还没有找到我的问题的答案。
特别是,我认为我可以设置 eclipse 来使用我的系统编译器,但这仍然没有解决问题。
我目前正在检查:“首选项 -> Java -> 已安装的 JRE”。
这仅包含一个 JRE,它是我的系统之一。
以下是问题的具体情况
我有一个 java 泛型类,它以 Enum 类型作为参数,如下所示:
public class MyClass<T extends Enum<T>>
在类的某个地方,我将一个已知的枚举值与 T 的值进行比较。例如,假设我有这个枚举:
public enum OtherEnum{
a,
b
}
然后我测试:
protected void foo(T enumVal){
if(enumVal == OtherEnum.a){
// do something
}
else if(enumVal == OtherEnum.b){
// do something else
}
}
这在 eclipse 中编译没有问题,但在命令行 javac 中我得到这个错误:
无法比较的类型:T 和 OtherEnum
我在两个使用 java 1.6 变体(1.6.0_26 和 1.6.0_16)的系统上进行了尝试。一个是Mac,另一个是linux。他们都给出了同样的错误,而 eclipse 编译没有问题。
所以:
如何确定 eclipse 使用的是哪个编译器?
这里有什么问题?
谢谢!
【问题讨论】:
-
您是否使用任何外部 .jar 文件?
-
请张贴SSCEE 说明您遇到的问题。
-
@szielenski 谢谢,这是一个非常有趣的帖子。我确定这些问题是相关的,但我不确定在我的情况下如何处理它。我现在正在研究更多。
-
@Dimme 不,没有外部的,这只是一个小项目。
标签: java eclipse generics javac