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

思维导图

概述

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

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

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、调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值