我有以下方法:
public <T> T fromJson( Reader jsonData, Class<T> clazz ) {
return fromJson( jsonData, (Type)clazz );
}
public <T> T fromJson( Reader jsonData, Type clazz ) {
...
}
编译器对第一种方法的说法是:
type parameters of <T>T cannot be determined;
no unique maximal instance exists for type variable T
with upper bounds T,java.lang.Object
return fromJson( jsonData, (Type)clazz );
^
问题是什么?
问题在于第二种方法的定义:
public <T> T fromJson( Reader jsonData, Type clazz ) {
编译器无法判断什么类型T
可能有。你必须返回Object
在这里,因为你不能使用Type<T> clazz
(Type
不支持泛型)。
这导致演员阵容(T)
在第一种方法中会引起警告。要消除该警告,您有两种选择:
-
告诉编译器类型。使用这个(奇数)语法:
this.<T>fromJson( jsonData, (Type)clazz );
请注意,您需要this
在这里因为<T>fromJson()
单独是非法语法。
使用注释@SuppressWarnings("unchecked")
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)