gpt4 book ai didi

java - 代码可以在eclipse中运行,但不能在javac中运行

转载 作者:行者123 更新时间:2023-11-30 08:01:49 25 4
gpt4 key购买 nike

代码

import java.util.*;

interface Sample{

}

public class TypeTest implements Sample{
public static void main(String[] args) {
Set<Object> objs = new HashSet<>();
objs.add(new TypeTest());
List<? extends Sample> objList = (List<? extends Sample>) new ArrayList<>(objs);
for (Sample t : objList) {
System.out.println(t.toString());
}
}
}

它可以在eclipse中运行并输出TypeTest@7852e922但是javac会报错:

incompatible types: ArrayList<Object> cannot be converted to List<? extends Sample>

最佳答案

这段代码不应该编译。问题是 new ArrayList<>(objs) 的推断类型是ArrayList<Object>因为你给构造函数传递了一个 Set<Object>作为参数。但是ArrayList<Object>不是 List<? extends Sample> 的子类型.

改变

    Set<Object> objs = new HashSet<>();

    Set<? extends Sample> objs = new HashSet<>();

如果 TypeTest 是 Sample 的子类型,代码应该可以编译... .

关于java - 代码可以在eclipse中运行,但不能在javac中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254854/

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