我有一个抽象类:
public abstract class RootProcessor<T> {
Class<T> clazz;
}
我需要用ClassT clazz;
填充RootProcessor
的子元素 - 每个子元素都有自己的T
我只找到了一种解决方案,但它需要编译器参数-Xlint:unchecked
public RootProcessor(){
this.clazz = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
这是最佳解决方案吗?我们能否不使用-Xlint:unchecked
来实现相同的效果?
@SuppressWarnings
,而不要使用-Xlint:unchecked
。 - millimooseT
的类型,则无法在运行时安全地获取Class<T>
。这里既保证了类型安全,又有点啰嗦,可以采用引入一个以clazz
为参数的受保护构造函数的方法。 - millimoosekey = gson.fromJson(json, key.getClass().getGenericSuperclass());
可以修复key = gson.fromJson(json,HashMap.class);
- User8461