今天写程序,遇到一个通过调用类的方法改变值的案例,就写了个一个反射方法.
类为A,方法为public void setXXX(int i,float f);
调用方法为
Class<?> clazz = A.getClass();
Class<?>[] pts = new Class<?>[newArags.length];
int index = 0;
for (Object o : this.newArags) {
pts[index++] = o.getClass();
}
try {
Method m = clazz.getMethod(this.methodName, pts);
m.invoke(this.owner, this.oldArgs);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
其中oldArgs为{1,2.1f},newArgs为{1,1.0f},想法是好,但是结果很是无情:
java.lang.NoSuchMethodException: A.setXXX(java.lang.Integer, java.lang.Float),
难道只能手动的把包装类型转换成基本类型吗?
for (Object o : this.newArags) {
Class<?> c = o.getClass();
if (c == Integer.class) {
c = int.class;
} else if(c == Float.class) {
c = float.class;
} else if (c == Double.class) {
c = double.class;
}
}
有知道更好办法的童鞋请告知我,不胜感激
分享到:
相关推荐
英语复习资料。可恶的东西。 英语复习资料。可恶的东西。
可恶的音乐家作文.doc
可恶的反义词及造句参考.doc
可恶的雾霾作文合集六篇.docx
可恶的反义词及造句参考精选.doc
“可恶”的运算放大器电容负载汇编.pdf
幼儿园新冠疫情教案可恶的病毒我不怕宣贯.pdf
C程序设计语言(第2版·新版)(去掉了可恶的广告).pdfC程序设计语言(第2版·新版)(去掉了可恶的广告).pdf
经典C程序设计语言(去掉了可恶的广告)C语言圣经
涵盖所有基本类型和少数专用于Unity的类型。 检测作弊尝试。 视频教程 模糊的预制件 用自动迁移、加密和其他受到支持的类型替换PlayerPrefs。 可以选择将所有保存的数据锁定至设备。 包括篡改检测! 备有适用于...
iPhone 8 plus 高通版 电路图,全网首发,没有可恶的水印,清晰干净,希望可以帮到有需要的人。
C程序设计语言(第2版·新版)(去掉了可恶的广告)官方题解
C程序设计语言(第2版·新版)(去掉了可恶的广告)
专业
仇恨记事本公共访问 API,用于控制充斥互联网的巨魔和可恶的人。 开发作为关于如何使用 Spring Boot 构建 RESTful API 的说明。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。这本书高清的版本去掉广告,加上书签。适合学习