java 反射

1.利用反射机制可以获取信息

Class c=Class.forName("className");

注明:className必须为全名,也就是得包含包名,比如,cn.netjava.pojo.UserInfo;

例子

Class cls1 = Role.class;
Class cls2 = Class.forName("yui.Role");


Object obj=c.newInstance();//创建对象的实例

Object o = cls1.newInstance(); //创建一个实例

2.获得构造函数的方法

public Constructor<?>[] getConstructors()      返回类中所有的public构造器集合,默认构造器的下标为0

public Constructor<T> getConstructor(Class<?>... parameterTypes)   返回指定public构造器,参数为构造器参数类型集合

public Constructor<?>[] getDeclaredConstructors()  返回类中所有的构造器,包括私有

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 返回任意指定的构造器

Constructor getConstructor(Class[] params)//根据指定参数获得public构造器

    Constructor[] getConstructors()//获得public的所有构造器

    Constructor getDeclaredConstructor(Class[] params)//根据指定参数获得public和非public的构造器

    Constructor[] getDeclaredConstructors()//获得public的所有构造器

例子

Constructor con = cls1.getDeclaredConstructor(new Class[]{String.class});

 con.setAccessible(true); //设置可访问的权限

Object obj = con.newInstance(new Object[]{"liyang"});
System.out.println(obj); //打印一下这个对象的信息 
//获取所有的构造方法集合
Constructor con1[] = cls1.getDeclaredConstructors();
 con1[1].setAccessible(true);
 Object obj1 = con1[1].newInstance(new Object[]{"tom"});
 System.out.println(obj1);

 

3.获得类方法的方法
    Method getMethod(String name, Class[] params),根据方法名,参数类型获得方法

    Method[] getMethods()//获得所有的public方法

    Method getDeclaredMethod(String name, Class[] params)//根据方法名和参数类型,获得public和非public的方法

    Method[] getDeclaredMethods()//获得所以的public和非public方法 

public Method[] getMethods()    获取所有的共有方法的集合

public Method getMethod(String name,Class<?>... parameterTypes) 获取指定公有方法 参数1:方法名 参数2:参数类型集合  

public Method[] getDeclaredMethods()  获取所有的方法

public Method getDeclaredMethod(String name,Class<?>... parameterTypes) 获取任意指定方法

例子

Method f = cls1.getMethod("getName", null);
 Object name = f.invoke(obj, null);
 System.out.println("we invoke method : "+ name);
4.获得类中属性的方法(获取成员变量的方法)


    Field getField(String name)//根据变量名得到相应的public变量

    Field[] getFields()//获得类中所以public的方法

    Field getDeclaredField(String name)//根据方法名获得public和非public变量

    Field[] getDeclaredFields()//获得类中所有的public和非public方法

 public Field getDeclaredField(String name)  获取任意指定名字的成员

public Field[] getDeclaredFields()             获取所有的成员变量

public Field getField(String name)           获取任意public成员变量

public Field[] getFields()                          获取所有的public成员变量

例子

Field mem = cls1.getDeclaredField("name");
 mem.setAccessible(true);
System.out.println("we get form field :"+mem.get(obj));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值