private void test1() {
Method[] methods = TestObj.class.getMethods();
Method listMethod = null;
Method arrayMethod = null;
for (Method m : methods) {
if (m.getName().equals("ListPara")) {
listMethod = m;
} else if (m.getName().equals("ArrayPara")) {
arrayMethod = m;
}
}
Class<?> arrayParaType = arrayMethod.getParameterTypes()[0];
boolean isArray = arrayParaType.isArray(); //是 Array
/**
* 获取 Array 的元素类型
* */
Class<?> arrayEleType = arrayParaType.getComponentType();
if (MenuInfo.class == arrayEleType) {
System.out.println(arrayEleType.toString());
}
Class<?> listParaType = listMethod.getParameterTypes()[0];
boolean isList = List.class.isAssignableFrom(listParaType); //是 List
/**
* 获取 List 的元素类型
* */
Type listType = listMethod.getGenericParameterTypes()[0];
ParameterizedType parameterizedType = (ParameterizedType) listType;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
Class<?> listEleType = (Class<?>) actualTypeArguments[0];
if (MenuInfo.class == listEleType) {
System.out.println(listEleType.toString());
}
}
class TestObj {
public void ListPara(List<MenuInfo> menuInfos) {
//
}
public void ArrayPara(MenuInfo[] menuInfos) {
//
}
}
Java 获取方法的参数是List 或 Array的元素类型
u0104654172024-06-09 17:46
相关推荐
用户8356290780511 小时前
用 Python 自动化 PowerPoint 演讲者备注添加东坡白菜1 小时前
破局全栈:一个前端开发的Java入门实战记录(1)唐青枫1 小时前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署wsaaaqqq2 小时前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架plainGeekDev5 小时前
null 判断 → Kotlin 可空类型糖拌西瓜皮6 小时前
Java开发者视角:深入理解Node.js异步编程模型plainGeekDev6 小时前
getter/setter → Kotlin 属性一线大码6 小时前
Smart-Doc 的简单使用黄忠6 小时前
01-系统架构设计-LangGraph状态机与多源异构RAGzzzzzz3107 小时前
假如我是掘金管理员,我先给评论区装个'代码审查'系统