本文目录
- java反射调用private方法
- Java反射机制获取set()方法 并且为set()方法传值
- java怎么通过反射的方式调用可变形参的方法
- java 类的反射机制调用代参方法
- JAVA反射传参
- Java类用反射机制来调用带参数的方法碰到的一些问题
- java反射调用方法可以传非基本类型吗如对象、接口
java反射调用private方法
Java程序不能访问持久化类的private方法,但是利用JAVA的反射机制可以实现调用,代码如下:
《span style="font-size:14px;"》import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class ReflectDemo {public static void main(String args) throws Exception {Method method = PackageClazz.class.getDeclaredMethod("privilegedMethod", new Class{String.class,String.class}); method.setAccessible(true);method.invoke(new PackageClazz(), "452345234","q31234132");}}class PackageClazz {private void privilegedMethod(String invokerName,String adb) {System.out.println("---"+invokerName+"----"+adb);}}《/span》#程序输出结果为:---452345234----q31234132
Java反射机制获取set()方法 并且为set()方法传值
Class.getDeclaredMethod() 是获取这个类中所有的方法,返回的是Method如果有参数,第1个是方法名称,第2个是该方法的所有参数数组,这样返回的是Method这个对象Method.invoke() 传入调用方法的类,另一个是调用这个方法所需要的参数,如果该方法没有参数,可以不填写,在JDK1,4之前,第2个参数是传入一个数组的,但是在jdk1.5之后,可以不传数组,多个参数用逗号隔开 不知道你听明白没
java怎么通过反射的方式调用可变形参的方法
ava反射调用可变参数的方法的方式是传入objects参数,如下代码:1234567891011121314151617181920212223242526272829303132333435363738394041424344 public class Reflect { public static void main(String args) throws Exception { Class《?》 clazz = Single.class; Single single = (Single) clazz.newInstance(); List《String》 list = new ArrayList《String》(){ private static final long serialVersionUID = 1L; { add("fuck"); add("ni"); add("mei"); } }; //获取method两种方式, 在method中 数组的的空间大小是可以随便写的不一定使用0 /* 1 */ Method method = clazz.getDeclaredMethod("method", Array.newInstance(Object.class, 0).getClass()); /* 2 */ method = clazz.getDeclaredMethod("method", (new Object).getClass());//初始化参数
java 类的反射机制调用代参方法
应该这样定义getDeclaredMethod():getDeclaredMethod(方法名,参数),方法名是一个字符串型的,参数是一个class类型的,例:getDeclaredMethod("setName",new Class {参数类型.class}),有几个参数就写几个.class。在调用时,用获得的Method的对象来调用invoke方法,例:Method对象.invoke(你定义类的类对象,new Object {参数})。此处传递的参数与上面定义的参数类型相对应希望能解决你的问题!
JAVA反射传参
Class《?》 localClass = Class.forName (this.description.getClassName ());Method localMethod = localClass.getDeclaredMethod ("createDemoPanel", (Class) null);JPanel localJPanel = (JPanel) localMethod.invoke (null, (Object) null);
Java类用反射机制来调用带参数的方法碰到的一些问题
Method m = this.getClass().getMethod(action, Object.class, Object.class);这里改成: Method m = this.getClass().getMethod(action, HttpServletRequest.class, HttpServletResponse.class);----------------------已经有人比我先回答了,呵呵。至于楼上说的第2点从效率上来说,改为this会快一些。
java反射调用方法可以传非基本类型吗如对象、接口
可以的,参数类型是没有限制的。通过以下代码可以证明。
接口:
public interface MyInterface { void print();}
实现类:
public class MyInterfaceImpl implements MyInterface { @Override public void print() { System.out.println("interfaceImpl"); }}
通过反射调用方法:
import java.lang.reflect.Method;public class Test { public static void main(String args) throws Exception { Test instance = Test.class.newInstance(); Method method = Test.class.getDeclaredMethod("test", MyInterface.class); MyInterface myInterface = new MyInterfaceImpl(); method.invoke(instance, myInterface); } public void test(MyInterface myInterface) { myInterface.print(); }}