我现在真的很困惑。我在另一个项目中使用以下代码没有任何问题:
public class ReadOnlyTable<T extends Model> implements ReadOnly<T> {
protected at.viswars.database.framework.core.DatabaseTable datasource;
private boolean debug = true;
protected ReadOnlyTable() {
initTable();
}
protected void reloadDataSource() {
initTable();
}
private void initTable() {
boolean readOnlyClass = false;
if (getClass().getSuperclass().equals(ReadOnlyTable.class)) readOnlyClass = true;
Class<T> dataClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
最后一行将毫无问题地运行。现在我做了第二个项目,因为我在阅读课程时遇到问题,我尝试做最简单的情况:
public class GenericObject<T> implements IGenericObject<T> {
public GenericObject() {
init();
}
private void init() {
Class<T> clazz = (Class<T>)((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}
这个类在这里被实例化:
GenericObject<String> go = new GenericObject<String>();
在我的第二个示例中,我将始终收到以下错误消息:
线程“主”java.lang.ClassCastException 中的异常:java.lang.Class 无法转换为 java.lang.reflect.ParameterizedType
我错过了什么??这让我发疯。任何帮助表示赞赏!