为了账号安全,请及时绑定邮箱和手机立即绑定

JavaPoet 检查 TypeName 是否是 List 的实例

JavaPoet 检查 TypeName 是否是 List 的实例

www说 2021-08-04 17:03:46
在 JavaPoet 中,我可以像这样从每个类中获取一个 TypeName 作为类的示例List。TypeName TYPE_LIST = ClassName.get(List.class);但是我现在如何检查给定的TypeName是否是 List 的实例?假设我有一个返回 a 的方法List<String>。我可以使用以下方法获取返回类型:TypeName returnTyoe = TypeName.get(method.getReturnType());我如何检查 tis 方法是否返回 a List?我不在乎它是否是 aList<String>我只想知道它是否至少是 aList并完全忽略通用参数。
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

正如您正确指出的那样,您将无法确定它是否是List<String>因为类型erasure

如果你只是想检查它是否是一个List,那么你可以这样做,

return method.getReturnType().contains("java.util.List");


查看完整回答
反对 回复 2021-08-04
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

这是我对这个问题的解决方案(非常简单):


 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");

    }


查看完整回答
反对 回复 2021-08-04
  • 3 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信