当前位置:首页 » 《我的小黑屋》 » 正文

java中反射(Reflection)的4个作用

27 人参与  2024年09月08日 10:42  分类 : 《我的小黑屋》  评论

点击全文阅读


java中反射(Reflection)的4个作用

作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断任意一个类所具有的成员变量和方法作用4、在运行时调用任意一个对象的方法总结


?The Begin?点点关注,收藏不迷路?

反射(Reflection)是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作。本文将详细介绍反射的主要作用,并通过Java示例来说明。

作用1、在运行时判断任意一个对象所属的类

反射提供了getClass()方法,使得我们可以获取对象的运行时类信息。通过这个方法,我们可以判断一个对象属于哪个类。

Object obj = "Hello, Reflection!";  Class<?> objClass = obj.getClass();  System.out.println("对象所属类: " + objClass.getName()); // 输出: 对象所属类: java.lang.String

作用2、在运行时构造任意一个类的对象

通过反射,我们可以使用Class对象的newInstance()方法(或其替代方法如getDeclaredConstructor().newInstance())来动态地创建类的实例。

try {      Class<?> stringClass = String.class;      Object strInstance = stringClass.getDeclaredConstructor().newInstance();      // 注意:String类有一个无参构造器,否则上述代码会抛出异常      System.out.println("通过反射创建的String实例: " + strInstance); // 输出: 通过反射创建的String实例:   } catch (Exception e) {      e.printStackTrace();  }

作用3、在运行时判断任意一个类所具有的成员变量和方法

通过反射,我们可以获取类的所有成员变量(字段)和方法,并可以检查它们的修饰符、参数等信息。

Class<?> stringClass = String.class;    // 获取所有公共字段  Field[] fields = stringClass.getFields();  for (Field field : fields) {      System.out.println("公共字段: " + field.getName());  }    // 获取所有方法(包括公共、保护、默认和私有)  Method[] methods = stringClass.getDeclaredMethods();  for (Method method : methods) {      System.out.println("方法: " + method.getName());  }

作用4、在运行时调用任意一个对象的方法

通过反射,我们可以调用对象的任何可见(public)或私有(private,通过setAccessible(true)方法)方法。

try {      String str = "Hello";      Class<?> stringClass = str.getClass();      Method lengthMethod = stringClass.getMethod("length");      int length = (int) lengthMethod.invoke(str);      System.out.println("字符串长度: " + length); // 输出: 字符串长度: 5  } catch (Exception e) {      e.printStackTrace();  }

总结

反射提供了强大的运行时操作类、对象、字段和方法的能力,这使得Java等语言更加灵活和动态。

然而,反射也有一些缺点,比如性能开销较大,并且可能会破坏封装性。

在这里插入图片描述


?The End?点点关注,收藏不迷路?

点击全文阅读


本文链接:http://zhangshiyu.com/post/156962.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 梁慕白苏洛(轻弹一首别离:结局+番外)列表_轻弹一首别离:结局+番外(梁慕白苏洛)全书+后续+结局在线
  • 幽思燃烬忘川路:叶墨谨幽璃:全书+后续(叶墨谨幽璃)免费在线_幽思燃烬忘川路:叶墨谨幽璃:全书+后续全书(叶墨谨幽璃)
  • 梦断南风起,醒时皆成空:结局+番外(尹若雪楚沐珊)_(尹若雪楚沐珊)梦断南风起,醒时皆成空:结局+番外后续免费(尹若雪楚沐珊)
  • 全书浏览惊御爷的心尖宠竟是黑道大小姐+番外(许轻欢)_惊御爷的心尖宠竟是黑道大小姐+番外(许轻欢)全书结局
  • 七零年代,作精女配坏透了(傅宴)_七零年代,作精女配坏透了
  • 六十岁,老公把初恋接回家删减内容修复版本_[徐涛孙静白安]小说精彩节选试读
  • 许助理娇娇软软上司老公哄着宠+后续+(霍西临)_许助理娇娇软软上司老公哄着宠+后续+
  • 幽思燃烬忘川路:全书+后续(幽思燃烬忘川路:全书+后续)_幽思燃烬忘川路:全书+后续(幽璃叶墨谨)列表_笔趣阁(幽璃叶墨谨)
  • 幽思燃烬忘川路:全书+完结篇(叶墨谨幽璃)_幽思燃烬忘川路:全书+完结篇全书列表_笔趣阁(叶墨谨幽璃)
  • 叶重楼徐湘姒后续篇(又名:重楼难解相思苦)_叶重楼徐湘姒后续篇(又名:重楼难解相思苦)
  • 爱似流萤遇繁星全书+后续(沐星澜陆司沉)_(爱似流萤遇繁星全书+后续)爱似流萤遇繁星全书+后续列表_笔趣阁(沐星澜陆司沉)
  • 雁字回时情未休:结局+番外(秦桑谢亦)_雁字回时情未休:结局+番外全

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1