私は今本当に混乱しています。別のプロジェクトで次のコードを問題なく使用しています。
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];
最後の行は問題なく実行されます。今、私は2番目のプロジェクトを作成し、クラスの読み取りに問題があったため、可能な限り最も単純なケースを実行しようとしました:
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>();
2 番目の例では、常に次のエラー メッセージが表示されます。
スレッド「メイン」の例外 java.lang.ClassCastException: java.lang.Class は java.lang.reflect.ParameterizedType にキャストできません
私は何が欠けていますか?? これは私を夢中にさせます。どんな助けでも大歓迎です!