Java反射机制获取set()方法 并且为set()方法传值
.getDeclaredMethod()方法里怎么传值里面两个参数一个是set方法名另一个是啥//不填报错要传的是类类型的.invoke()里怎么传值也是两个参数一个是调...
.getDeclaredMethod()方法里怎么传值里面两个参数一个是 set方法名 另一个是啥 //不填报错 要传的是 类 类型的.invoke()里怎么传值也是两个参数 一个是 调用方法的类 同问另一个是啥? //试过很多
展开
5个回答
2013-06-11
展开全部
Class.getDeclaredMethod() 是获取这个类中所有的方法,返回的是Method[]如果有参数,第1个是方法名称,第2个是该方法的所有参数数组,这样返回的是Method这个对象Method.invoke() 传入调用方法的类,另一个是调用这个方法所需要的参数,如果该方法没有参数,可以不填写,在JDK1,4之前,第2个参数是传入一个数组的,但是在jdk1.5之后,可以不传数组,多个参数用逗号隔开 不知道你听明白没
2013-06-11
展开全部
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);
};
}这是效果图,相信你能看的懂
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);
};
}这是效果图,相信你能看的懂
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-11
展开全部
反射机制可以获得的是类的方法,不是对象的,虽然获得了方法名,但如果没有对象,你怎么给他传值(调用方法调用的是类的对象的方法)。
若果你用反射创建了类的对象,那么你可以直接调用这个对象的方法了,调用方法并不需要反射了。
若果你用反射创建了类的对象,那么你可以直接调用这个对象的方法了,调用方法并不需要反射了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
摘抄:
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);
};
}
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);
};
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-11
展开全部
Class数组 如果没参数就直接 传个null的Class进去 invoke里第一个参数写该方法属于的object 第2个如果方法所需的形参数为 0,就写0... api上的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询