Java的类反射机制(Java高级)

喜夏-厌秋 提交于 2020-04-05 15:14:17

思维导图

概述

为什么要用反射:任意调用类中的私有内容,使类的使用更加灵活。

反射:针对性地映射 某一个完整事务的行为或特征(单独操作类中任意内容)

1、反射机制 - 获取对象

  • 什么是类对象?

    类对象,就是用于描述这种类,都有什么属性,什么方法。

  • 对象之前的区别?

    gareen 和 teemo都是 Hero对象,他们的区别在于:各自有不同的名称、血量、技能。

  • 类之间的区别?

    Hero 和 soldier 都是类,他们的区别在于有:不同的方法,不同的属性。

  • 获取类对象的3种方式

    • Class.forName
    • Hero.class
    • new Hero().getClass()
    package reflection;
    
    import charactor.Hero;
    
    public class TestReflection {
    
        public static void main(String[] args) {
                String className = "charactor.Hero";
                try {
                    Class pClass1=Class.forName(className);
                    Class pClass2=Hero.class;
                    Class pClass3=new Hero().getClass();
                    System.out.println(pClass1==pClass2);
                    System.out.println(pClass1==pClass3);
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
    }
    

2、反射机制 - 访问属性

2.1、getField 和 getDeclaredField的区别

getDeclaredField: 获取本类所有字段(无视权限访问修饰符) 适用于获取当前类

getField:只能获取public字段,包括从父类继承来的字段 适用于获取父类public

3、反射固定步骤:

3.1、获取

  • 1、获取对象 Class
  • 2、通过类对象获取内容(成员方法、成员变量)
  • 3、设置类外可用(暴力反射,private)

3.2、执行

  • 1、通过类对象获取类的构造方法
  • 2、通过构造方法创建对象
  • 3、调用
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!