我正在尝试生成旧代码,并且有一些代码在给定类似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 块中我们已经确定了T == Integer
,因此不知道返回Integer.TYPE
是可以的,因此令人讨厌。当然,我们总是可以显式转换为Class<T>
. 问题是,这个演员表是否安全,因此我可以放心添加@SuppressWarnings("unchecked")
注释?