黑马程序员-JAVA反射机制

来源:互联网 发布:旺道网站排名优化 编辑:程序博客网 时间:2024/06/08 08:34

================ ASP.Net +Android+IOS开发.Net培训、 期待与您交流! ================

        JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Class类是Reflection API中的核心类,它有以下方法。

getName():获得类的完整名字。

getFields():获得类的public类型的属性。

getDeclaredFields():获得类的所有属性。

getMethods():获得类的public类型的方法。

getDeclaredMethods():获得类的所有方法。

getMethod(String name, Class[] parameterTypes):获得类的特定方法,name 参

数指定方法的名字,parameterTypes参数指定方法的参数类型。

getConstrutors():获得类的public类型的构造方法。

getConstrutor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes参数指定构造方法的参数类型。

定义Person类

public class Person {private String name="a";private int age=3;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person(String name, int age) {super();this.name = name;this.age = age;}}
通过class.forName来反射:
import java.lang.reflect.Field;import java.lang.reflect.Method;public class test01 {public static void main(String[] args) throws SecurityException, NoSuchFieldException, ClassNotFoundException {// TODO Auto-generated method stubClass<?> clazz=Class.forName("Person");Field[] f=clazz.getFields();for(int i=0;i<f.length;i++){System.out.println(f[i].toString());}Method methods[] = clazz.getDeclaredMethods();for (int i = 0; i < methods.length; i++)System.out.println(methods[i].toString()); }}

输出结果:

public java.lang.String Person.getName()public void Person.setName(java.lang.String)public int Person.getAge()public void Person.setAge(int)


================ ASP.Net +Android+IOS开发.Net培训、 期待与您交流! ================

0 0
原创粉丝点击