java反射getDeclaredMethod()方法求解
图片观看:测试代码:publicstaticvoidmain(String[]args)throwsException{Methodtarget1=newDate().g...
图片观看:
测试代码:
public static void main(String[] args) throws Exception {
Method target1 = new Date().getClass().getDeclaredMethod("setYear",int.class);
System.out.println(target1);
Method target2 = new Date().getClass().getDeclaredMethod("setYear",Integer.class);
System.out.println(target1);
}
在编写一个工具类时,定义了一个获取Method的方法,我使用的是target2的形式,在测试时遇到的问题。
我就很奇怪:为什么使用Integer.class参数,出现无法找到异常。
而使用int.class可以。说明Integer.class与int.class不等价。
但是为什么??
求解 展开
测试代码:
public static void main(String[] args) throws Exception {
Method target1 = new Date().getClass().getDeclaredMethod("setYear",int.class);
System.out.println(target1);
Method target2 = new Date().getClass().getDeclaredMethod("setYear",Integer.class);
System.out.println(target1);
}
在编写一个工具类时,定义了一个获取Method的方法,我使用的是target2的形式,在测试时遇到的问题。
我就很奇怪:为什么使用Integer.class参数,出现无法找到异常。
而使用int.class可以。说明Integer.class与int.class不等价。
但是为什么??
求解 展开
1个回答
展开全部
抛出的异常是:
java.lang.NoSuchMethodException: java.util.Date.setYear(java.lang.Integer)
找不到方法
你看下Date的源代码
public void setYear(int year) {
getCalendarDate().setNormalizedYear(year + 1900);
}
参数是int类型,不是Integer类型
int是基础类型,Integer是他的封装类,是个对象,这个类提供很多方法.不严格意义上说,你可以理解为是int的工具类
更多追问追答
追问
int与Integer不是会自动装箱与拆箱吗。
其他不是等价的吗?
获取Class对象的3种方法:
类名.class
对象名.class
Class类提供的静态方法forName(String className)
而int.class说明是第一种。
但是int是一个类吗?
追答
int不是类,class可以理解是他的属性,
就像数组一样,有length属性
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询