当前位置: 首页 > 面试题库 >

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

堵毅然
2023-03-14
问题内容

我知道过去有一些关于在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. 这里甚至有什么问题?

谢谢!


问题答案:

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

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



 类似资料:
  • 问题内容: 我不得不发现我的项目中有Java代码,该代码可以在Eclipse中编译并正常运行,但是会在javac中引发编译错误。 一个完整的代码段: javac中的编译返回: 现在,此错误阻止在Maven中构建项目。由于Eclipse编译器具有更高的容忍度,因此我现在不得不假设代码段的定义和用法如上所述,静态方法不是有效的Java吗? 问题答案: 似乎Sun的1.6 JDK无法推断正确的类型。以下

  • 问题内容: 注意:这是从Comparable和Comparator合约衍生出来的,涉及null 该代码可以在Eclipse(20090920-1017)中编译并正常运行 但是它不能在上编译javac 1.6.0_17。这是错误消息: 有人可以解释为什么差异吗?这是一个错误吗?如果是这样,谁有错误? 问题答案: 这是一个已确认的错误:错误ID 6468354。这是相关的摘录: 此问题是由以下事实引起

  • 问题内容: 抱歉,标题含糊。我有这段代码可以在Eclipse Juno(4.2)上编译,但不能在javac(1.7.0_09)上编译: 错误是: 所以问题是: 这是Bug还是Eclipse错误? 有什么办法可以在不更改方法签名的情况下进行编译(即保留通配符)? 我知道将其更改为确实可以使其编译,但是我想知道是否有办法首先避免这种情况。另外,由于内容的类型需要严格的约束,因此无法将方法更改为。 问题

  • 在下面的情况下,我在理解Java泛型的行为时遇到了问题。 具有一些参数化接口和一些类上的方法,这些类返回扩展该接口的类,由、1.8Oracle JDK、OSX和Linux生成java编译错误,但不是由Eclipse IDE中的Eclipse编译器生成的(它也可以在Eclipse RCP OSGi运行时下运行),实现如下: ./Gradlew build 最简单的修复是删除方法签名中泛型定义的一部分

  • 我在IntelliJ中编译Maven项目时遇到了麻烦。 如果运行from commandline=success 如果单击intelj=success中的“重新导入所有Maven项目”图标 如果我单击IntelliJ=success中的“为所有项目生成源和更新文件夹”图标 如果我单击Maven Projects面板中的“install”Lifecycle=success 在Maven“安装”之后,

  • 问题内容: 我想知道是否有用于Eclipse IDE的解决方案来调试我没有源代码的Java代码,即调试动态反编译的代码,逐步执行代码等?我尝试使用JD- Eclipse ,JadClipse,如果我想查看一些类文件,这些插件会很好用,但是在调试时,我得到“找不到源”。-如何“附加”这些插件以“提供”源? 我的环境: Eclipse 3.5 Windows XP(如果可能,我会寻找跨平台解决方案)