gpt4 book ai didi

java - 未经检查的强制转换抽象基类

转载 作者:行者123 更新时间:2023-11-30 06:49:24 32 4
gpt4 key购买 nike

有人可以解释一下,为什么这个 Actor 阵容未经检查。应该保证类型 T 始终派生自 Base,因此从 TBase 的转换不应该取消选中。

abstract class Base
{
private static final Map<Class<? extends Base>, Consumer<Base>> _CONSUMERS = new HashMap<>();

@SuppressWarnings( "unchecked" )
public static <T extends Base> void addConsumer( Class<T> clazz, Consumer<T> consumer )
{
_CONSUMERS.put( clazz, (Consumer<Base>) consumer );
}
}

最佳答案

consumer的类型是 Consumer<T> =Consumer<? extends Base> ,而put预计 Consumer<Base> .

您可能应该声明您的 _CONSUMERS map 类型:

Map<Class<? extends Base>, Consumer<? extends Base>>

Java 无法识别 X<? extends T> 类型的对象的情况(或 X<? super T> )可以用来代替 X<T> ,您必须明确指示类型边界(请参阅 here 有关于此的更全面的讨论)。

关于java - 未经检查的强制转换抽象基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114236/

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