资讯专栏INFORMATION COLUMN

Java知识点总结(反射-介绍)

msup / 1031人阅读

摘要:知识点总结反射介绍知识点总结反射反射程序在运行状态中,可以动态加载一个只有名称的类动态调用类的所有属性和方法加载完类之后,在堆内存中,就产生了一个类型的对象一个类只有一个对象。

Java知识点总结(反射-介绍)

@(Java知识点总结)[Java, 反射]

反射

程序在 运行状态中 ,可以动态加载一个只有名称的类 (动态调用类的所有属性和方法)

Class c = Class.forName("com..test.User");

加载完类之后,在堆内存中,就产生了一个 Class 类型的对象(一个类只有一个 Class 对象)。

这个对象就包含了完整的类的结构信息,通过这个对象我们可以看到类的结构。这个对象就像一面镜子,透过这个镜子看到类 的结构,所以,我们形象的称之为:反射。

反射的常见作用:

动态加载类、动态获取类的信息(属性、方法、构造器)

动态构造对象

动态调用类和对象的任意方法、构造器

动态调用和处理属性

获取泛型信息

处理注解

示例:

public class Test01 {
 
  // 一个类只对应一个 Class 对象
  private static void test1() throws ClassNotFoundException {
   String path = "com.gs.Student";
   Class clazz1 = Class.forName(path);
   
   Class clazz2 = Class.forName(path);
   
   System.out.println(clazz1.hashCode());
   System.out.println(clazz2.hashCode());
   /*366712642
   366712642*/
  }
  
  // 数组类类型
  private static void test2() {
   Class intClazz =int.class;
        
        int[] arr01 = new int[10];
        int[] arr02 = new int[30];
        int[][] arr03 = new int[30][3];
        double[] arr04 = new double[10];
         
        System.out.println(intClazz.hashCode()); //1829164700
        System.out.println(arr01.getClass().hashCode()); //2018699554
        System.out.println(arr02.getClass().hashCode()); //2018699554
        // arr01 == arr02  都是一维同一类型的对象
        System.out.println(arr03.getClass().hashCode()); //1311053135
        System.out.println(arr04.getClass().hashCode()); //118352462
  }
  
  // 获取类的类型
  private static void test3()  {
   String path = "com.gs.Student";
   
   Class strClazz = path.getClass();  //对象获取类的类型
   Class strClazz2 = String.class;  //类获取类的类型
   
   System.out.println(strClazz == strClazz2); //true
     
  }
  
  public static void main(String[] args) {
   try {
     test1();
   } catch (ClassNotFoundException e) {
     e.printStackTrace();
   }
   
   test2();
   test3();
  }
 
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71586.html

相关文章

  • Java识点总结(动态字节码操作-Javassist介绍

    摘要:知识点总结动态字节码操作介绍知识点总结动态字节码操作运行时操作字节码可以让我们实现如下功能动态生成新的类动态改变某个类的结构添加删除修改新的属性方法常见的字节码操作类库,这是的项目的一部分。 Java知识点总结(动态字节码操作-Javassist介绍) @(Java知识点总结)[Java, 动态字节码操作] 运行时操作字节码可以让我们实现如下功能: 动态生成新的类 动态改变某个类的结...

    godruoyi 评论0 收藏0
  • Java相关

    摘要:本文是作者自己对中线程的状态线程间协作相关使用的理解与总结,不对之处,望指出,共勉。当中的的数目而不是已占用的位置数大于集合番一文通版集合番一文通版垃圾回收机制讲得很透彻,深入浅出。 一小时搞明白自定义注解 Annotation(注解)就是 Java 提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解) 是一个接口,程序可以通过...

    wangtdgoodluck 评论0 收藏0
  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0
  • Java识点总结反射-反射机制性能问题)

    摘要:知识点总结反射反射机制性能问题知识点总结反射性能相关注意点启用和禁用访问安全检查的开关值为则指示反射的对象在使用时应该取消语言访问检查。并不是为就能访问为就不能访问。禁止安全检查,可以提高反射的运行速度。 Java知识点总结(反射-反射机制性能问题) @(Java知识点总结)[Java, 反射] 性能相关注意点: setAccessible 启用和禁用访问安全检查的开关,值为 tru...

    LeexMuller 评论0 收藏0
  • Java识点总结反射-通过反射操作类的属性和方法 )

    摘要:知识点总结反射通过反射操作类的属性和方法知识点总结反射使用反射操作类的属性和方法通过反射调用构造方法,构造对象其实调用无参构造器张三调用有参构造器李四通过反射调用普通方法获取方法激活方法王武王武通过反射操作属性是属性,如果不写会这个私有属 Java知识点总结(反射-通过反射操作类的属性和方法 ) @(Java知识点总结)[Java, 反射] 使用反射操作类的属性和方法: import ...

    jlanglang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<