有人问以下情况如何得到泛型参数的实际类型:
APIService api = new APIService<User>();
由于Java的类型擦除,没有办法获取,APIService不知道它被赋予了User。
但可以变通一下:
APIService api = APIService.create(User.class);
对应的类定义是:
public class APIService<T> {
public static <U> APIService<U> create(Class<U> cls) {
return new APIService<U>(cls);
}
public APIService(Class<T> cls) {
//这里知道了实际类型cls
}
}
Kotlin, Scala等基于JVM的语言具有reified generics,能方便地获取实际类型。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。