大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
1、forName 方法
forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来。
如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调用加载。
注意:只有调用的参数是类名或者方法时,才可用。
2、newInstance()方法
作用:将对象实例化。返回类型为Object。与new的区别在于,new可以带参,而newInstance()不可以,一边初始化无参类。通常与forName()配合使用。
例:
String str = “java.util.Date”;
Class cl1= Class.forName(str);//加载java.util.Date类
Object obj = cl1.newInstance();//实例化cl1
3、getMethod()方法
getMethod方法与getField方法类似,getField方法根据表示域名的字符串,返回一个Field对象。而getMethod方法则根据方法名称和相关参数,来定位需要查找的Method对象并返回。
getMethod与getDeclareMethods方法的区别在于,后者返回一个Method对象数组,需要自己在结果中查找所需Method对象。
原型: Method getMethod(String name,Class…parameterTypes)
参数解释:name: method的名称
parameterTypes:method的参数类型的列表(参数顺序需按声明method时的参数列表排列)
返回:符合method名称和参数的method对象
抛出错误:NoSuchMethodException
原因:没有找到所要查询的Method对象 或 Method名称为“”或“”
NullPointerException
原因:所要查询的Method对象的名称为null
SecurityException
原因:调用的类或其父类没有调用权限
例:
Method m1 = Employee.class.getMethod(“getName”);
Method m2 = Employee.class.getMethod(“raiseSalary”,double.class); 上面例子分别获得了Employee类的getName方法和raiseSalary方法的方法指针m1,m2。
4、invoke方法
作用:调用包装在当前Method对象中的方法。
原型:Object invoke(Object obj,Object…args)
参数解释:obj:实例化后的对象
args:用于方法调用的参数
返回:根据obj和args调用的方法的返回值
抛出错误:IllegalAccessException
原因:Method对象强制Java语言执行控制 或 无权访问obj对象
IllegalArgumentException
原因:方法是实例化方法,而指定需要调用的对象并不是实例化后的类或接口
例:
Class l = Class.forName(“test1.A”);
Object obj1 = l.newInstance();
Object[] obj2 = new Object[1];
obj2[0] = new String(“hello world”);
Method m = l.getMethod(“a1”,new Class[] { String.class });
Object obj3 = m.invoke(obj1, obj2);
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193075.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...