动态转换为Java中的泛型类型

时间:2015-01-30 18:20:10

标签: java

这是我放在一起的一个小例子:

private static <T> T getValue(T defaultValue) {
    if (defaultValue instanceof Boolean) {
        return (T) true;
    }
    return defaultValue;
}

基本上,如果T是布尔类型,我希望返回“true”。但是,我得到一个编译错误,布尔值无法强制转换为T。

我该怎么做?

另外,有没有办法检查T是否为boolean类型?问候。

2 个答案:

答案 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;
}