有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我有一个api函数,它想要一个类<T>,如何给它一个列表<String>的类?

我使用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) 个答案

  1. # 1 楼答案

    我不完全确定我是否理解你的问题,但如果你有一个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?

  2. # 2 楼答案

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