Java反射机制获取set()方法 并且为set()方法传值11
发布网友
发布时间:2023-10-13 04:31
我来回答
共5个回答
热心网友
时间:2024-11-30 07:29
Class.getDeclaredMethod() 是获取这个类中所有的方法,返回的是Method[]如果有参数,第1个是方法名称,第2个是该方法的所有参数数组,这样返回的是Method这个对象Method.invoke() 传入调用方法的类,另一个是调用这个方法所需要的参数,如果该方法没有参数,可以不填写,在JDK1,4之前,第2个参数是传入一个数组的,但是在jdk1.5之后,可以不传数组,多个参数用逗号隔开 不知道你听明白没
热心网友
时间:2024-11-30 07:29
package com.knowhowinfo;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class Test {
public static void main(String args[]) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException, SecurityException, NoSuchMethodException {
Class<A> c = A.class;
//返回所有的方法
Method[] ms = c.getDeclaredMethods();
A a = c.newInstance();
for (Method method : ms) {
//这里遍历一下 可有可以无 实验而已
System.out.println(method);
}
Method m = c.getDeclaredMethod("set", int.class,String.class);
m.setAccessible(true);//因为写成private 所以这里必须设置
m.invoke(a, 5,"你好");
}
}
class A{
private void set(int i,String s){
System.out.println(i+","+s);
};
}这是效果图,相信你能看的懂
热心网友
时间:2024-11-30 07:30
反射机制可以获得的是类的方法,不是对象的,虽然获得了方法名,但如果没有对象,你怎么给他传值(调用方法调用的是类的对象的方法)。
若果你用反射创建了类的对象,那么你可以直接调用这个对象的方法了,调用方法并不需要反*。
热心网友
时间:2024-11-30 07:30
摘抄:
package com.knowhowinfo;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.method;public class Test {
public static void main(String args[]) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException, SecurityException, NoSuchmethodException {
Class<A> c = A.class;
//返回所有的方法
method[] ms = c.getDeclaredmethods();
A a = c.newInstance();
for (method method : ms) {
//这里遍历一下 可有可以无 实验而已
System.out.println(method);
}
method m = c.getDeclaredmethod("set", int.class,String.class);
m.setAccessible(true);//因为写成private 所以这里必须设置
m.invoke(a, 5,"你好");
}
}
class A{
private void set(int i,String s){
System.out.println(i+","+s);
};
}
热心网友
时间:2024-11-30 07:31
Class数组 如果没参数就直接 传个null的Class进去 invoke里第一个参数写该方法属于的object 第2个如果方法所需的形参数为 0,就写0... api上的