gpt4 book ai didi

java - 为什么 Guava 的 TypeToken.getRawType() 会返回 Class<? super T> 而不是 Class

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:01 24 4
gpt4 key购买 nike

来自 Effective Java 第二版,第 28 条:“不要使用通配符类型作为返回类型。这不会为您的用户提供额外的灵 active ,而是会迫使他们在客户端代码中使用通配符类型。”

public final Class<? super T> getRawType()

我刚刚开始掌握通用通配符,以了解我正在编写的一段代码中的最后一个未经检查的转换警告,但我不明白为什么 getRawType() 会返回通配符类型。

class Base<T>{}
class Child<T> extends Base<T>{}

public <C> void test (TypeToken<? extends Base<C>> token) {
Class<? extends Base<C>> rawType = (Class<? extends Base<C>>) token.getRawType();
}

我必须转换 token.getRawType() 因为它返回一个

Class<? super ? extends Base<C>>

最佳答案

如果你有一个 TypeToken<ArrayList<String>> 怎么办?你想得到 Class<ArrayList> (原始类型)。如果它返回 Class<T> , 那么它将返回 Class<ArrayList<String>>这不是 Class<ArrayList>你想要的。

关于java - 为什么 Guava 的 TypeToken<T>.getRawType() 会返回 Class<? super T> 而不是 Class<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261476/

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