检查如果一个方法的返回是列表<字符串>使用反射

User12322341232142:

我试图让使用反射的方法的返回类型,但是我似乎不能够检查List<String>明确。
我做了一个非常哈克方式:

if (method.getGenericReturnType().getTypeName().equalsIgnoreCase("java.util.List<java.lang.String>"))

这是不是真的是我应该做的,所以我想知道是否有更好的解决方案。

GotoFinal:

method.getGenericReturnType()返回java.lang.reflect.Type正如你可以看到的Javadoc它具有已知亚型的列表:

All Known Subinterfaces:
GenericArrayType, ParameterizedType, TypeVariable<D>, WildcardType

所以,你可以用它来进行一些instanceof检查:

// is it ParameterizedType - so any type like Type<GenericType, OrMoreTypes>
if (!(method.getGenericReturnType() instanceof ParameterizedType)) return false;
ParameterizedType parametrizedReturnType = (ParameterizedType) method.getGenericReturnType();
// raw type is just a class without generic part
if (parametrizedReturnType.getRawType() != List.class) return false;
if (parametrizedReturnType.getActualTypeArguments().length != 1) return false;
Type firstArg = parametrizedReturnType.getActualTypeArguments()[0];
return firstArg == String.class;

注意该类型可能会更加复杂,但仍然与兼容列表,如果你只是想读一些数据,如方法可能有这样的签名ArrayList<? extends String>,然后检查将返回false。如果你想也支持这样的情况下最好使用一些库,例如org.apache.commons.lang3.reflect.TypeUtils.isAssignable因为这样的库允许您创建类型定义的实例(这些图书馆只是有这些接口的自己的实现)和执行更高级的检查等isAssignableisInstance作为可悲Java不提供这样的API。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

在字符串上使用split方法将返回一个空字符串

来自分类Java

要检查最有效的方法,如果一个字符串包含特定字符

来自分类Dev

如何使用字符串函数func startsWith检查字符串列表而不是一个?

来自分类Python

Python:检查列表中至少一个正则表达式是否与字符串匹配的优雅方法

来自分类Dev

检查另一个列表中的字符串列表中是否存在字符串字符?

来自分类Dev

检查列表内的字符串是否存在于另一个嵌套列表中,并在嵌套列表中返回它的索引

来自分类Dev

如果一个列表仅包含一个字符串,则用逗号分隔的字符串比较两个列表

来自分类Dev

使用列表<字符串>。任何()找到,如果一个字符串包含以及找到匹配的项目的项目?

来自分类Java

如果找不到枚举常量,则返回一个空字符串

来自分类Linux

如果匹配另一个列表中的值,则提取字符串

来自分类Dev

如果字符串不在一个或多个列表中,则会引发错误

来自分类Dev

如果另一个文件的Python列表中的字符串删除对象

来自分类Python

检查另一个字符串中的单词列表

来自分类Dev

从另一个列表中的一个列表中查找字符串并找到返回的字符串

来自分类Java

如何检查如果一个类已经重写从科特林或Java使用反射的接口的默认方法?

来自分类Dev

如果是关于一个字符串还是字符串列表的声明

来自分类Python

Python字典:返回列表或字符串中的第一个值

来自分类Dev

修改切片从字符串到字符串的功能,如果找不到字符串则返回最后一个索引

来自分类Java

从列表设置字符串的一个普通列表

来自分类Dev

一个Bash脚本,用于检查以逗号分隔的字符串列表中是否存在字符串

来自分类Dev

检查字符串列表中是否有另一个字符串

来自分类Python

检查Python列表项是否在另一个字符串中包含一个字符串

来自分类Dev

无法将一个函数的字符串和列表返回到另一个函数

来自分类Javascript

检查字符串的最快方法是在JavaScript中包含另一个子字符串?

来自分类Dev

C#检查一个拆分字符串的一个计数,如果正确,则打印另一个计数

来自分类Java

简化代码-检查字符串中的第一个字符以匹配字符列表

来自分类Dev

使用另一个列表对Python列表中的字符串进行排序

来自分类Dev

使用Kotlin从另一个列表中提取的字符串创建列表

来自分类Dev

检查列表中的每个字符串(所有字符串)是否至少是另一个字符串中的一个子字符串

TOP 榜单

热门标签

归档