gpt4 book ai didi

java - 有界 Java 泛型无法编译

转载 作者:行者123 更新时间:2023-11-30 05:02:18 25 4
gpt4 key购买 nike

我无法编译它,而且我不明白原因。最终,我想将类扩展 TClass 的对象集合传递到生成方法中,该方法采用类扩展 TClass 的对象集合,这应该有效。

如有任何帮助,我们将不胜感激。

public interface Generator<IT extends ITClass, T extends TClass> {

IT generate(Collection<T> tClassCollection)
}

Generator<?, ? extends TClass> generator = generatorClass.newInstance();

Collection<? extends TClass> TClassCollection = ...

... generator.generate(TClassCollection);

我收到此错误

The method generate(Collection&lt;capture#8-of ? extends TClass>) in the type 
Generator&lt;capture#7-of ?,capture#8-of ? extends TClass> is not applicable for the arguments (Collection&lt;capture#9-of ? extends TClass>)

最佳答案

This should work

没有;如果这样做的话,就会在类型系统中打开一个漏洞。考虑:

class SpecialT extends TClass {}

class SpecialGenerator extends Generator<ITClass, SpecialT> {}

Generator<?, ? extends TClass> generator = SpecialGenerator.class.newInstance();
Collection<? extends TClass> TClassCollection = Arrays.asList(new TClass());
generator.generate(TClassCollection);

一个SpecialGenerator只能与 Collection<SpecialT> 一起使用,但您正在尝试传递 Collection<TClass> ,它可以包含除 SpecialT 之外的类型的实例.

关于java - 有界 Java 泛型无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270851/

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