java反射 refect

通过反射,可以获取类的构造方法,属性,函数等信息。

package reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


public class ReflectTest {

	public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {

		Class c = Class.forName("reflect.Students");
                
                //通过反射,获取类的构造方法,getConstructs()获取该类及父类的所有构造方法,而getDeclaredConstructs()方法只是获取该类的构造方法
		Constructor[] cons = c.getDeclaredConstructors();
		System.out.println("construct function:=============");
		for (int i = 0; i < cons.length; i++) {
			System.out.println(cons[i]);
		}

                //获取类的属性字段,注意必须是public的属性才可以,非public的属性字段无法得到
		Field[] fields = c.getFields();
		System.out.println("fiels are:=============");
		for (int i = 0; i < fields.length; i++) {
			System.out.println(fields[i]);
		}

                //获取该类的方法,如果没有declared,则连同父类的方法一起获取
		Method[] methods = c.getDeclaredMethods();
		System.out.println("all methods:=============");
		for (int i = 0; i < methods.length; i++) {
			System.out.println(methods[i]);
		}

                //invoke方法第一个参数是调用该方法的对象,第二个参数是该方法的参数,out方法没有参数,此处为null
                methods[0].invoke(c.newInstance(), null);

		int modify = c.getModifiers();
		System.out.println(modify);

	}

}

class Students {

	public int id;
	public String name;

	Students() {

	}

	Students(int id, String name) {
		this.id = id;
		this.name = name;
	}

	void out() {

		System.out.println("hi, this is a group a students");

	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值