反射

一、反射的概念

  • 使用Class对象操作方法区中对应的类的信息的方式就叫做反射机制。

二、获取字节码文件的方法

  1. Object的getClass方法
 package com.sun;
import java.util.Date;
public class Test {
    public static void main(String[] args) throws Exception {
        //实例化一个Date类对象
        Date date=new Date();
        //使用getClass()方法的取得Date类对应的Class<Date>对象
        Class<?>   dateClass=date.getClass();
        System.out.println(dateClass);
    }
}
  1. 通过数据类型的静态属性 class属性
package com.sun;
public class Test {
    public static void main(String[] args) throws Exception {
        //使用Class<T>的静态方法forName()取得Date类对应的Class<Date>对象
         Class<?>  dateClass=Class.forName("java.util.Date");
         System.out.println(dateClass);
    }
}
  1. Class类中一个静态方法
 package com.sun;
import java.util.Date;
public class Test {
    public static void main(String[] args) throws Exception {
        //使用Date.class方式取得Date类对应的Class<Date>对象
         Class<?>  dateClass= Date.class;
         System.out.println(dateClass);
    }
}

三、用反射操作构造方法

  1. 可以使用Class类对象的getConstructor()系列的方法取得构造方法对象
  2. 在反射中使用Constructor类表示构造方法。
  3. getConstructor()只能取得类的public修饰的构造方法
  4. getDeclaredConstructors()取得所有修饰符修饰的的构造方法
  • 具体操作为:
    通过反射获取构造方法对象并且创建对象
    通过获取对象new一个新对象
    通过构造方法对象创建对象(也可以通过字节码文件对象获取构造方法对象)

四、反射的操作

  1. 操作属性其实还可以使用操作setter方法和getter方法实现属性的操作。
  2. Constructor(构造方法的类)、Method(表示普通方法的类)、Field(表示属性的类),这三个类有一个共同的父类(java.lang.reflect.AccessibleObject)。
  3. 反射可以操作字节码文件对象、构造方法 创建对象、成员变量、成员方法和调用方法、数组、注解。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值