gpt4 book ai didi

带有通配符和静态包装器的 Java 泛型

转载 作者:搜寻专家 更新时间:2023-11-01 00:55:20 25 4
gpt4 key购买 nike

对不起,问题标题太笼统了,但我不确定如何正确地称呼我的问题。

查看 Collections.singleton 的默认结果类型调用:

Set<Number> numberSingleton = 
Collections.singleton((Number) null);

Set<Collection> rawCollectionSingleton =
Collections.singleton((Collection) null);

Set<Collection<String>> stringCollectionSingleton =
Collections.singleton((Collection<String>) null);

Set<? extends Collection<?>> anyCollectionSingleton =
Collections.singleton((Collection<?>) null);

我无法解释的是最后一行。为什么 ? extends Collection<?>使用而不是简单的 Collection<?>

这是对此的正确修复吗?

Set<Collection<?>> anyCollectionSingleton = 
Collections.<Collection<?>>singleton((Collection<?>) null);

为什么我开始这一切:

我遇到了没有编译行的问题:

java.util.Optional.ofNullable((Collection<?>) a).orElse((Collection<?>) b);

这似乎解决了问题,但代价是多少?

java.util.Optional.<Collection<?>>ofNullable((Collection<?>) a).orElse((Collection<?>) b);

最佳答案

不,这是一个完全不同的概念。

与什么一起使用

Set<? extends Collection<?>> anyCollectionSingleton = 
Collections.singleton((Collection<?>) null);

是你有一个泛型类,它扩展了泛型类的集合。

所以,这是关于继承的。

关于带有通配符和静态包装器的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34807682/

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