java - 在IntelliJ中编译错误但在eclipse中没有

标签 java eclipse intellij-idea compiler-errors

我从 Eclipse 切换到 IntelliJ IDEA,在 IntelliJ 中遇到编译错误,但在 Eclipse 中却没有。

public class TestClass<K, V extends Comparable<V>> {

private K key;
private V value;

public void someMethod() {
    if (this.value instanceof String) {
        String stringValue = (String) this.value;
        // some code
    }
}
}

(不要因为该代码而责怪我,它是遗留代码而不是我的)

在 eclipse 中一切正常,在 intellij 中它被标记为错误,表示“不可转换类型,无法将 V 转换为 java.lang.String”。

对于两者,我都使用标准 MacOS X JDK (1.6.0_65)。

它不仅适用于字符串,还适用于每种类型/类(我还有一些其他并发)

为什么我在 intellij 中遇到这些错误,但在 eclipse 中却没有?

最佳答案

Java 的 String 类是最终类,您的 this.value 无法继承它。您应该使用 .toString()String.valueOf() 来避免转换。

您看到这种现象是因为 Eclipse 编译器与 javac 不同(IntelliJ 中默认使用 javac,但您可以更改它)。 Eclipse 编译器更允许。请参阅this question了解更多信息。

关于java - 在IntelliJ中编译错误但在eclipse中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20520817/

相关文章:

java - Titanium Mobile 是否将 Javascript 转换为 native Java 或 Objective C 编译代码?

sql - 如何让 SQL 编辑器在 Intellij IDEA 13 中检查语法?

docker - Intellij docker在Websphere中实时更新EAR

java - 为什么JavaFX不能用.jar文件打包?

java - 此环境中不提供编译器。也许您在 JRE 而不是 JDK 上运行?

java - Eclipse 'Installing Software' - chmod 失败

Java String类的奇怪特性

java - 带参数的 HTTP 多部分 POST?

java - 如何轮流组合2个双向链表

java - 在 eclipse jdt/ast 中使用 ICompilationUnit 进行 ASTParser.setSource() 方法