Java泛型代码在Eclipse中编译,但不在命令行中编译

发布于 2021-01-30 16:45:06

我知道过去有一些关于在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毫无问题地在编译。

所以:

  1. 如何确定正在使用哪个编译器eclipse?

  2. 这里甚至有什么问题?

谢谢!

关注者
0
被浏览
97
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    独立的编译器…使用==会强制执行更严格的编译时间检查,因此在CL中,它强制执行类型比较和错误处理。在Eclipse中,您可以管理编译时的设置并放宽限制。

    您可以尝试Enum.equals(),它可能不会强制执行这种严格的编译时类型比较。只是一个想法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看