以下のコードでは:
public class AvroReader<T> {
public AvroReader(Class type, File packetFile) throws IOException{
reader = new DataFileReader<>(packetFile,
new ReflectDatumReader<T>(ReflectData.get().getSchema(type)));
}
}
type=T.class であるため、コンストラクターのフィールド「type」を廃止したいと思います。コンパイラが getSchema(T.class) を受け入れた場合のみ!
1 つの提案は、次を使用することでした。
Class<T> cls = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
次のエラーが表示されます。
java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType