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
相关推荐
打工仔折腾 AI2 分钟前
极空间用 Docker 部署 Photopea:网页版 PS 的私有化实践今年下半年8 分钟前
【防重放】Spring Boot 通过自定义注解实现接口防重放Eiceblue10 分钟前
使用 Python 实现 Excel 行列转置(保留单元格样式)WeiXin_DZbishe12 分钟前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211计算机编程指导师26 分钟前
计算机毕设选题推荐:基于Spark+Django的黄金价格历史数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习Wang's Blog28 分钟前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习yi01134 分钟前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?计算机编程指导师37 分钟前
计算机毕设怎么做?基于Spark+Django的股票数据分析与可视化系统实战指导 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习企业数字化笔记37 分钟前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案高级程序源38 分钟前
django房屋租赁系统28636-计算机课程设计、毕业设计