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
相关推荐
Norna4 小时前
缓存文件从没写出来:一个 .json 被当成目录用了Flynn Liang4 小时前
可观测性与成本治理:一次对话的 17 个观测点金銀銅鐵5 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令aifannihao6 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱yuyuxun17 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082如夏倾城7 小时前
百度文心(容易被忽略的好用AI)使用方式用户019027581617 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?少司府8 小时前
嵌入式入门篇(二):初识STM32F103ZET6文丑颜不良啊9 小时前
LeetCode2821~2840题目解析打工仔折腾 AI9 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践