【发布时间】:2020-09-17 10:57:27
【问题描述】:
我有以下代码。我想得到一个通用的解决方案来让TypeToken 只通过类引用。
Type application = new TypeToken<List<Application>>() {
}.getType();
Type bill = new TypeToken<List<Bill>>() {
}.getType();
Type payment = new TypeToken<List<Payment>>() {
}.getType();
我试图从只传递类引用的函数中获取 typeToken。我已经尝试过。
private static <T> Type getType(Class<T>classType) {
return new TypeToken<List<? extends T>>() {
}.getType();
}
但是当我将该方法称为getType(Application.class) 时,这不会返回应用程序类型令牌列表,并且使用类型出现问题。请帮我修复它。提前致谢。
【问题讨论】:
-
由于类型擦除而无法实现。
TypeToken存在的原因是为了绕过类型擦除。 stackoverflow.com/a/30007018/2398020 -
非常感谢。我只是浪费了很多时间来探索解决方案
-
@MingweiSamuel 我认为您误解了这个问题。外部类型始终为
List。仅内部类型将由classType指定。 -
@shmosel 我在想
Class<E> elementClass因为该方法的参数会遭受类型擦除,而TypeToken<E> elementToken不会,但我还没有实际测试过代码 -
@MingweiSamuel 没有理由这样,考虑到您可以轻松地从
Class构造TypeToken。
标签: java