例如:
class A {
private List<B> list;
//todo get set
}
我怎么通过 A.class 获得 B.class
1
running17 2021 年 7 月 1 日 Field listField = A.class.getDeclaredField("list");
Type type = listField.getGenericType(); Class detailClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; |
2
AoEiuV020 2021 年 7 月 1 日 via Android JAVA 就怕泛型,没有泛型的话楼上反射就可以,
泛型涉及类型擦除一般建议单独保存 type, |
3
xuanbg 2021 年 7 月 1 日
只要一路泛型到底,就不需要知道具体类型。
|
7
ztcaoll222 2021 年 7 月 2 日
@Tuy #6 load json 可以使用 TypeReference
|
8
BrokenVns 2021 年 7 月 2 日
查你用的 JSON 库的文档,看看有没有提供泛型相关的支持。比如 Gson 会提供 TypeToken 。也可以去参考类似 GSON 等库的实现。
|
10
bthulu 2021 年 7 月 2 日
改用 c#吧, 真泛型不擦除
|
11
siweipancc 2021 年 7 月 2 日 via iPhone
你这是要重新实现 jackson?参照一下阿里的运行时 typeReference,直接抄过来也可以
|
12
eric96 2021 年 7 月 2 日
运行时是找不到的,泛型被擦除了,所以泛型只要保证编译时通过,代码就能跑起来。
|