gpt4 book ai didi

java - IntelliJ 和 Eclipse 之间的编译器区别

转载 作者:行者123 更新时间:2023-11-29 06:25:39 25 4
gpt4 key购买 nike

我有一个如下所示的类。此类在 Eclipse build 20090920-1017 上编译良好:

public class MyScheduledExecutor implements ScheduledExecutorService {

...

public <T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {
...
}


public <T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks) throws InterruptedException {
...
}


public <T> T invokeAny(Collection<Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
...
}


public <T> T invokeAny(Collection<Callable<T>> tasks) throws InterruptedException, ExecutionException {
...
}

...

}

但是,如果我尝试在 IntelliJ 9 中进行编译,则会出现编译错误。如果我替换所有对 <Callable<T>> 的引用,它只会在 IntelliJ 中编译与 <? extends Callable<T>> .例如:

    public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
...
}

不幸的是,如果我随后尝试再次在 Eclipse 中编译修改后的类,则会出现编译错误。

Name clash: The method invokeAll(Collection<? extends Callable<T>>) of type 
SingleScheduledExecutor has the same erasure as invokeAll(Collection<Callable<T>>) of
type ExecutorService but does not override it

有什么方法可以创建一个实现 ScheduledExectorService 的类吗?将在 IntelliJ 和 Eclipse 下编译?两个 IDE 似乎都配置为使用 Java 1.5,这对我的部署平台来说是正确的。

最佳答案

在 Java 6 中,ExecutorService声明以下方法(例如):

<T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException,
ExecutionException

但在 Java 5 中,相同的方法在 ExecutorService 中声明为这样:

<T> T invokeAny(Collection<Callable<T>> tasks)
throws InterruptedException,
ExecutionException

我没有安装 Java 5,无法使用 Eclipse Java EE Galileo 20090920-1017 重现错误(我在 Ubuntu 下,sun-java5-jdk 已从 Karmic 的存储库中删除,我太懒了手动安装),但实际上,我认为 Eclipse 是正确的。

您确定在 IntelliJ IDEA 中使用的是 JDK 5(而不是符合 1.5 级别的 JDK 6)吗?

关于java - IntelliJ 和 Eclipse 之间的编译器区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1827890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com