2

間違っているList.classので使っています。List<String>.classパラメータ化されたクラスのクラスを取得する構文はありますか?

コード:

import java.util.List;
import org.apache.camel.Message;
...
    Message m = exchange.getIn();
    List<String> serviceIds = null;
    serviceIds = m.getHeader("serviceId", List.class);

もちろん、私はむしろ持っていたいです:

    serviceIds = m.getHeader("serviceId", List<String>.class);

文字列ではないもののリストがヘッダーにある場合にgetHeaderがnullを返すようにするため。

4

2 に答える 2

7

そのようなクラスがないため、クラスを指定することはできません。型消去と呼ばれるプロセス中にコンパイラによってList<String>型が削除され、純粋なが残ります。<String>List

于 2012-09-21T14:48:22.197 に答える
3

私はあなたの質問を完全に理解しているわけではありませんが、あなたがListいくつかのクラスでパラメータ化されている場合、例えば:

List<Cat> myCats = new ArrayList<Cat>();

そして、呼び出したいAPIメソッドがいくつかあります。

public static void doSomething(Class<T> clazz);

そして、あなたはそのメソッドにを提供しようとしていますがCat.class、残念ながら、に含まれているパラメータ化されたクラスを(実行時に)決定する方法はありませんList。この情報は実行時に消去されます。

あなたの質問はこれと重複している可能性があると思いますが、私が間違っている場合は遠慮なく訂正してください。

実行時にジェネリック型を取得するにはどうすればよいですか?

于 2012-09-21T14:50:20.173 に答える