我有一个需要Class <t>的api函数 - 如何给它一个List <string>的类?</string> </t>

时间:2012-09-21 14:44:52

标签: java

我正在使用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。

2 个答案:

答案 0 :(得分:7)

你不能给它一个List<String>类,因为没有这样的类:编译器在type erasure的过程中删除<String>的类型,留下你的纯List

答案 1 :(得分:3)

我不完全确定我理解你的问题,但如果你有一个List参数化了一些类,例如:

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

您有一些要调用的API方法:

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

并且您希望使用Cat.class提供该方法,遗憾的是无法确定(在运行时)List中包含的参数化类。此信息在运行时被删除。

我相信你的问题可能与此问题重复,但如果我弄错了,请不要犹豫纠正我:

How to get the generic type at runtime?