java基础,关于java反射方法的调用,
2017-08-15 19:32
375 查看
java反射中方法的调用
摘抄:java反射是要解析字节码,将内存中的对象进行解析,包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多! 反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
public class Test {public static void main(String[] args) throws InstantiationException, IllegalAccessException {/* public Student(){}public void eat(){System.out.println("吃好多的");}*/Class classz= Student.class;//获取的类Student student= (Student) classz.newInstance();//获取类中的对象student.eat();}}
import java.lang.reflect.Method;//私有化普通方法的时候public class Test02 {public static void main(String[] args) throws Exception{/* public Student(){}private void eat(){System.out.println("吃好多的");}*/Class class1= Student.class;Student student= (Student) class1.newInstance();//获取类的对象Method method= class1.getDeclaredMethod("eat");method.setAccessible(true);method.invoke(student);}}
import java.lang.reflect.Method;//私有化的普通方法,且带有参数public class Test03 {public static void main(String[] args) throws Exception {/* public Student(){}private void eat(String tpe){System.out.println("吃好"+tpe+"多的");}*/Class clazz= Student.class;Student student= (Student) clazz.newInstance();/*私有化的方法,有无参数的时候*/Method method= clazz.getDeclaredMethod("eat", String.class);method.setAccessible(true);//设置那个开关method.invoke(student,"哈哈" );//当私有化的普通方法也有参数时,在此处接受返回的参数}}
import java.lang.reflect.Constructor;//私有化构造方法,且无参数public class Test04 {public static void main(String[] args) throws Exception {/* private Student(){}public void eat(){System.out.println("吃好多的");}*/Class clazz= Student.class;Constructor constructor= clazz.getDeclaredConstructor();constructor.setAccessible(true);Student student= (Student) constructor.newInstance();//创建对象的方法student.eat();/*当构造方法是私有的,但是无参的构造方法*/}}
import java.lang.reflect.Constructor;//私有化的构造方法是带有参数的public class Test05 {public static void main(String[] args) throws Exception{/*private Student(String name){}public void eat(){System.out.println("吃好多的");}*/Class clazz= Student.class;Constructor constructor= clazz.getDeclaredConstructor(String.class);constructor.setAccessible(true);Student student= (Student) constructor.newInstance("哈哈");student.eat();}}
相关文章推荐
- java基础之反射-通过反射调用某个属性的setter和getter方法
- java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)
- 黑马程序员--Java基础加强--07.【反射创建对象 操作字段 调用方法的异同】【个人总结】
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- Java基础知识 十七 (关于反射一些方法的总结)
- 关于java的反射,调用私有方法(有参数私有方法),私有属性
- 关于java反射调用class中的方法
- java反射调用配置文件构造类对象,使用其方法
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的研究
- 通过Java反射调用方法
- java 反射入门-属性方法调用实例
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Java 反射机制运用实例(动态调用类的方法)
- java 反射入门-属性方法调用实例
- [Java] - 通过反射调用对象的方法
- 有关java通过反射机制调用类中自有方法的问题
- 关于Java调用dll的方法
- 关于Java调用dll的方法
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨
- 老紫竹JAVA基础培训(2)熟悉方法的调用