这是我放在一起的一个小例子:
private static <T> T getValue(T defaultValue) {
if (defaultValue instanceof Boolean) {
return (T) true;
}
return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)
基本上,如果T是布尔类型,我希望返回"true".但是,我得到一个编译错误,布尔值不能强制转换为T.
我该怎么做?
还有,有办法检查T是否是boolean类型?问候.
true 是一种原始类型,您希望返回一个对象。您应该将 true 包装在一个对象中。
这有效:
private static <T> T getValue(T defaultValue) {
if (defaultValue instanceof Boolean) {
return (T)Boolean.valueOf(true);
}
return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)
更改
return (T) true;
Run Code Online (Sandbox Code Playgroud)
至
return (T) Boolean.TRUE;
Run Code Online (Sandbox Code Playgroud)
这将作为Boolean.True工作,类是Boolean的实例.值"true"是基本类型boolean.