繁体   English   中英

编译器错误:: Intellij Idea vs Eclipse

[英]compiler errors::Intellij Idea vs Eclipse

在我们的团队中,不同的开发人员使用不同的IDE。 一位Intellij Idea用户编写了这样的代码

public class Bar<A> extends AbstractSet<Bar.Inner> {  
    class Inner {
    }

    @Override
    public Iterator<Inner> iterator() {
        return null;
    }

    @Override
    public int size() {
        return 0;
    }
}

另一个(Eclipse用户)说,它仅在替换时才能编译

 public Iterator<Inner> iterator() {

 public Iterator<Bar.Inner> iterator() {

要么

 extends AbstractSet<Bar.Inner>

 extends AbstractSet<Bar<A>.Inner>
 extends AbstractSet<Bar<?>.Inner>//other variant

正确的编译器行为是什么? 在哪里可以找到此类问题的清单?

附加信息
日食:

  • 版本:Helios Service Release 1
  • 版本号:20100917-0705
  • jdk:1.6.0_23(安装在计算机上)

理念:

  • 版本:10.0.2
  • 建立:103.72
  • jdk:1.6.0_21(通过帮助->关于)

UPD这是我的失败。 Idea对此进行了报告,但仅在应用程序构建时报告。 但是,我认为,这也是Idea的错误。

这似乎是潜在的JDK版本问题,而不是IDE的问题-您是否检查过它们是否都使用相同的版本,例如JDK 1.6.0_23?

我敢打赌,Eclipse JDK是与Sun不同的IBM变体。

在“关于”对话框中看到的JDK版本是运行IDEA的Java版本。 用于编译的JDK在项目结构->项目->项目SDK中。

我已经使用Java 1.6_20,openjdk 1.6.20和Java 1.7.0在Windows的IDEA社区10.0.1上测试了您的代码。 这三个都给了我编译器错误。 您还可以将IDEA设置为使用Eclipse编译器:设置->编译器-> Java编译器->使用编译器:Eclipse。 它还给出了编译错误:

Eclipse编译器:

The return type is incompatible with <Test.Inner>.iterator()

Java 7:

Bar is not abstract and does not override abstract method iterator() in AbstractCollection

iterator() in Bar cannot override iterator() in AbstractCollection

method does not override or implement a method from a supertype

Java 6和OpenJDK 6:

Bar is not abstract and does not override abstract method iterator() in java.util.AbstractCollection

iterator() in Bar cannot override iterator() in java.util.AbstractCollection; attempting to use incompatible return type
found   : java.util.Iterator<Bar<A>.Inner>
required: java.util.Iterator<Bar.Inner>

method does not override or implement a method from a supertype

因此,这不是IDEA问题,而是您用于编译的JDK的问题。

如duffymo之前所述,Eclipse不使用Sun的JDK,而是使用他们自己的编译器(该编译器对连续编译和执行过程中的一些错误提供了更好的支持)。

但是,Eclipse团队的目标是使Sun JDK尽可能保持一致的行为。 因此,如果遇到您认为应该纠正的错误,则应向Eclipse团队报告错误。

这样的另一种行为可以在我的博客中阅读。

我前段时间有同样的错误。 Eclipse在这里存在错误,使用javac进行编译时,编译器没有抱怨并显示错误。 我很久以前就提交了一个错误,但是他们似乎不再在数据库中包含该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM