您可以尝试输入令牌:
public <T> T getValue(Class<T> cls) { if (valVal == null) return null; else { if (cls.isInstance(valVal)) return cls.cast(valVal); return null; }}请注意,这不会进行任何转换(即
Double,如果
valVal是
Float或的实例,则不能使用此方法提取
Integer)。
顺便说一句,您应该得到关于的定义的编译器警告
getValVal。这是因为,无法在运行时检查强制类型转换(Java泛型通过“擦除”工作,从本质上讲,这意味着编译后会忘记泛型类型参数),因此生成的代码更像是:
public Object getValVal() { return valVal;}


