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