首页 > 编程语言 > 详细

java中的反射机制

时间:2020-06-13 09:26:53      阅读:56      评论:0      收藏:0      [点我收藏+]

反射机制

概述

1、反射机制有什么用?
通过java语言中的反射机制可以操作字节码文件,有点类似于黑客。(可以读和修改字节码文件)通过反射机制可以操作代码片段。(class文件)
2、反射机制的相关类在哪个包下?
java.lang.reflect.*;
3、反射机制相关的类有哪些?
java.lang.Class<T>:整个字节码文件,一个类型(一个类)
java.lang.reflect.Method:代表字节码中的方法字节码(类中的方法)
java.lang.reflect.Constructor<T>:代表字节码中的构造方法字节码(类中的构造方法)
java.lang.reflect.Field:代表字节码中的属性字节码(成员变量)

获取Class的三种方式
  • 第一种:Class c = Class.forName("完整英名带包含");
    这是静态方法。
    方法的参数是一个字符串。
    字符串需要的是一个完整类名。
    完整类名必须带有包名。 java.lang包也不能省略。
  • 第二种:Class c = 对象.getClass();
    java中任何一个对象都有getClass()方法
  • 第三种:Class c = 任何类型.class;
    java语言中任何一种类型,包括基本数据类型,它都有.class属性。
  • 代码示例
import java.util.Date;

public class Demo{
    public static void main(String[] args){
        /*第一种*/
        Class c1 = null;
        Class c2 = null;
        Class c3 = null;
        try {
            //c1代表String.class文件或String类型
            c1 = Class.forName("java.lang.String");
            //c2代表Integer类型
            c2 = Class.forName("java.lang.Integer");
            //c3代表Date类型
            c3 = Class.forName("java.util.Date");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        /*第二种*/
        //java中任何一个对象都有getClass()方法
        String s = "abc";
        //x代表String.class字节码文件,x代表String类型。
        Class x = s.getClass();
        //判断内存地址
        System.out.println(c1 == x);
        /*输出:true,
        字节码文件装载到JVM中的时候只装载一份*/

        Date date = new Date();
        Class y = date.getClass();
        System.out.println(y == c3);
        //输出:true

        /*第三种*/
        /*java语言中任何一种类型,
        包括基本数据类型,它都有.class属性。*/
        Class q = String.class;
        Class w = int.class;
        Class e = Date.class;
        System.out.println(x == q);
        //输出:true
        System.out.println(y == e);
        //输出:true
    }
}

java中的反射机制

原文:https://www.cnblogs.com/yu011/p/13111402.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!