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
# 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 楼答案
你不能给它一个
List<String>
类,因为没有这样的类:<String>
的类型在被称为type erasure的过程中被编译器删除,留下纯List