www說(shuō)
2021-08-04 17:03:46
在 JavaPoet 中,我可以像這樣從每個(gè)類中獲取一個(gè) TypeName 作為類的示例List。TypeName TYPE_LIST = ClassName.get(List.class);但是我現(xiàn)在如何檢查給定的TypeName是否是 List 的實(shí)例?假設(shè)我有一個(gè)返回 a 的方法List<String>。我可以使用以下方法獲取返回類型:TypeName returnTyoe = TypeName.get(method.getReturnType());我如何檢查 tis 方法是否返回 a List?我不在乎它是否是 aList<String>我只想知道它是否至少是 aList并完全忽略通用參數(shù)。
3 回答

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
正如您正確指出的那樣,您將無(wú)法確定它是否是List<String>
因?yàn)?a >類型erasure。
如果你只是想檢查它是否是一個(gè)List
,那么你可以這樣做,
return method.getReturnType().contains("java.util.List");

小唯快跑啊
TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
這是我對(duì)這個(gè)問(wèn)題的解決方案(非常簡(jiǎn)單):
public static boolean isParameterizedType(Class clazz) {
String simpleName = clazz.getSimpleName();
return parameterizedTypeSet.contains(simpleName);
}
private static Set<String> parameterizedTypeSet = new HashSet<>();
static {
parameterizedTypeSet.add("List");
}
添加回答
舉報(bào)
0/150
提交
取消