gpt4 book ai didi

java - 泛型和类转换

转载 作者:行者123 更新时间:2023-12-01 05:00:34 25 4
gpt4 key购买 nike

我正在尝试泛化旧代码,并且有一些代码,例如Integer.class ,它返回 Integer.TYPE (反之亦然),对于其余包装器依此类推(如果输入不是包装器,则返回输入类)。这似乎是转换的候选者(如果它在某处尚不存在)。所以,我有这样的东西:

public static <T> Class<T> convert(Class<T> type) {
if (type == Integer.class) return Integer.TYPE;
// and so on
return type;
}

这段代码的问题是编译器本身并不知道在 if block 中我们已经确定 T == Integer ,因此不知道返回 Integer.TYPE没关系,因此呕吐。当然,我们总是可以显式转换为 Class<T> 。问题是,这个强制转换是否安全,因此我可以放心地添加 @SuppressWarnings("unchecked")注释?

最佳答案

@SuppressWarnings("unchecked")这里应该没问题:我们知道每个包装类 W声明其 TYPE字段为Class<W> , - 可能只是添加一条注释来解释这个合理性。

请注意Guava已有 Primitives.unwrap 为您处理这个问题(如果您正在使用它)。

关于java - 泛型和类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445600/

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