Java基础之—反射

一、什么是反射

Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,也有称作“自省”。
反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,被private封装的资源只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。
反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。

一切反射相关的代码都从获得类对象开始

二、如何得到类对象?

  3种获取方式:
     2.1 类名.class;
     2.2 对象名.getClass();
     2.3 Class.forName(全限定名/全路径名)(最常用)

        // java反射 是java中的一种重要的机制
		// 可以动态的实例化对象,读写属性,调用方法
		
		//一切反射相关的代码都从获得类对象开始
		//获取类对象的方式
		
		//1.类名.class Student stu = new Student()
		
		Class clazz = Student.class;
		
		System.out.println(clazz);
		
		//2.对象名.getClass();
		Student stu = new Student();
		
		System.out.println("-----------------------");
		
		Class clazz1 = stu.getClass();
		
		System.out.println(clazz1);
 
		//3.Class.forName(全限定名)(最重要)
		System.out.println("----------------------");
		
		Class clazz2 = Class.forName("com.zking.refletion.Student");
		
		System.out.println(clazz2);

 三、根据类得到类名(全限定名/全路径名)

    1)cName.getName();            -->获取全限定名
    2)cName.getSimpleName();         -->获取类名
    3)cName.getPackage();             -->获取包名

四、根据类得到类的属性

  Field field=cla.getField(“属性名”);

    field.getName();            -->获取属性名            
    filed.getType();            -->获取属性类型        
    field.getModifiers();            -->获取属性访问修饰符    
    field.set(Object,Object);         -->设置属性值,参数1:要设置属性所在对象;参数2:要设置的值;    
    field.get(Object);            -->获取属性值,参数:要获取属性值的对象                
    clazz.getDeclaredField(“属性名”);    -->获取单个属性(私有、公有、受保护、默认、静态)    
    clazz.getDeclaredFields();        -->获取所有属性(私有、公有、受保护、默认、静态)

五、根据类得到类的方法

    //无参无返回、无参有返回、有参无返回、有参有返回
    cla.getMethod();            -->获取单个公有方法
    cla.getDeclaredMethod();        -->获取当个方法(包括私有、受保护、默认、公有)
    cla.getMethods();            -->获取所有公有方法
    cla.getDeclaredMethods();        -->获取所有的方法(包括私有、受保护、默认、公有)

六、根据类得到类的构造方法

    cla.getConstrutor();            -->获取单个公有构造方法
    cla.getDeclaredConstrutor();        -->获取单个构造方法(包括私有、受保护、默认、公有)
    cla.getConstrutors();            -->获取所有的公有构造方法
    cla.getDeclaredConstrutors();        -->获取所有的构造方法(包括私有、受保护、默认、公有)

七、根据类得到类的实现接口列表 

    Class[] interface=cla.getInterfaces();    -->获取类对象中所有实现接口列表


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值