可恶的基本类型和包装类型

今天写程序,遇到一个通过调用类的方法改变值的案例,就写了个一个反射方法.

类为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;
				}
			}

 有知道更好办法的童鞋请告知我,不胜感激

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值