java学习之反射初接触

本文深入介绍了Java反射机制的基本概念及其实现原理,包括如何通过三种不同的方式获取类的字节码,以及如何利用这些字节码创建对象。此外,还探讨了反射中的一些常用方法,如getClass()、Class类的静态方法和Class.forName()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 反射就是把java中各个成分(比如方法,属性,package,数组之类的有统一名字,又能抽象出来的东西)映射成java中相应的各种类

 

字节码:当加载类时,先把类的二进制字节码加载到内存中,再用字节码复制一个又一个对象

 

得到字节码方式:如果内存中已经存在该字节码,则返回该字节码,如不存在,则先加载,再返回加载的字节码

 

三种方式获得字节码:

 

1.   对象.getClass();

2.   类.Class

3.  Class.forName("");

 

如:

  String str= “”;

  Class cs1= str.getClass();

  Class cs2= String.Class();

  Class cs3= Class.forName("java.lang.String");

 

public class ReflectTest {
    public static void main(String args[]) {
        String str1="";
        Class cls1 = str1.getClass();
        Class cls2 = String.class;
        try {
            Class cls3 = Class.forName("java.lang.String");
            System.out.println(cls1==cls3);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println(cls1==cls2);

        System.out.println(cls1.isPrimitive());
        //String不是基本类型,isPrimitive判断是否为基本类型
        
    }

}

也就是说,String类型的实例对象他们因为字节码相同

所以他们相等

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值