gpt4 book ai didi

Java 泛型在 Eclipse 中编译,但在 javac 中不编译

转载 作者:太空狗 更新时间:2023-10-29 22:54:03 25 4
gpt4 key购买 nike

我不得不发现我的项目中有 Java 代码,它在 Eclipse 中编译和运行良好,但在 javac 中抛出编译错误。

一个独立的片段:

import java.util.HashSet;
import java.util.Set;

public class Main {

public static void main(String[] args) {
Set<Integer> setOfInts = new HashSet<Integer>();
Set<Object> setOfObjects = covariantSet(setOfInts);
}

public static <S, T extends S> Set<S> covariantSet(Set<T> set) {
return new HashSet<S>(set);
}

}

在 javac 中编译返回:

Main.java:10: incompatible types
found : java.util.Set<java.lang.Integer>
required: java.util.Set<java.lang.Object>
Set<Object> setOfObjects = covariantSet(setOfInts);
^

此错误现在会阻止在 Maven 中构建项目。由于 Eclipse 编译器的构建具有更高的容错性,我现在必须假设上述静态方法片段的定义和用法不是有效的 Java?

最佳答案

Sun 的 1.6 JDK 似乎无法推断出正确的类型。以下似乎适用于我的机器:

Set<Object> setOfObjects = Main.<Object, Integer>covariantSet(setOfInts);

注意必须调用静态方法prefixed with the class name

关于Java 泛型在 Eclipse 中编译,但在 javac 中不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533880/

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