这是我放在一起的一个小例子:
private static <T> T getValue(T defaultValue) {
if (defaultValue instanceof Boolean) {
return (T) true;
}
return defaultValue;
}
基本上,如果T是布尔类型,我希望返回“true”。但是,我得到一个编译错误,布尔值无法强制转换为T。
我该怎么做?
另外,有没有办法检查T是否为boolean类型?问候。
答案 0 :(得分:5)
更改
return (T) true;
要
return (T) Boolean.TRUE;
这将作为Boolean.True工作,类是Boolean的实例。价值&#34;真&#34;是原始类型boolean。
答案 1 :(得分:4)
true是基本类型,您想要返回一个Object。你应该在一个对象中包装true。
这有效:
private static <T> T getValue(T defaultValue) {
if (defaultValue instanceof Boolean) {
return (T)Boolean.valueOf(true);
}
return defaultValue;
}