2017-07-10 7 views
-1

名前が文字列として渡されるクラスのSpecificDatumReaderを作成しようとしています。これらのクラスの1つを作成することができますが、このクラスのクラスを取得できますが、実際にテンプレート化されたオブジェクトを作成することはできません。Javaでは、型名からテンプレートオブジェクトを生成するにはどうすればよいですか?

String[] classList = conf.getClasslist(eventname); 
    decoders = new LinkedList<SpecificDatumReader>(); 
    for (String className : classList) 
    { 
     Class<?> eventclass = Class.forName(className); 
     Object holder = eventclass.newInstance(); 
     decoders.add(new SpecificDatumReader<WhatGoesHere?>(eventclass)); 
    } 
+2

Javaにはテンプレート型がありません。ジェネリックはコンパイル時の型チェック機能です(* type erasure *も参照してください)。 –

+2

生のタイプは使用しないでください。 – shmosel

+1

(Elliottが言ったように)ジェネリックはコンパイル・タイプ・チェック機能なので、オブジェクトを作成するときにタイプ・パラメータが何であるかをプログラムに伝える必要はないと確信しています。とにかくリスト。だから、 'new SpecificDatumReader (何でも)'はうまくいくはずです。 – ajb

答えて

0

できません。

  1. Javaにはテンプレートがありません。投稿した構文の正しい名前はGenericsです。
  2. あなたが求めている引数は、実行時変数ではなくコンパイル時定数(クラス名)です。
関連する問題