首页 > 其他分享 >如何使用反射

如何使用反射

时间:2024-08-07 19:38:51浏览次数:12  
标签:反射 java String System Reflect 如何 reflect 使用 Class

如何使用反射

  1. 通过 Class 对象的 newInstance() 方法

    package com.lut.study_java_demo1;

    import java.util.Scanner;

    /**
    * @author Zhou
    * @desc 反射的使用
    * @date 2024/8/7 16:13
    */
    public class _21_new_reflect {
       public static void main(String[] args) throws Exception{
           String a=new Scanner(System.in).nextLine();
           Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
           Reflect reflect=(Reflect)c.newInstance();
           reflect.showString(a);
      }
    }
    class Reflect{
       public Reflect(String a){
           System.out.println(a);
      }
       void showString(String s){
           System.out.println(s);
      }
    }

    首先使用绝对路径创建一个Reflect类的Class对象,然后通过Reflect类的Class对象创建了一个该类的实例,将地址赋给引用变量reflect,通过引用变量调用Reflect类的方法,实现该方法。

  2. 通过 Constructor (调用无参构造方法)对象的 newInstance() 方法

    package com.lut.study_java_demo1;

    import java.util.Scanner;

    /**
    * @author Zhou
    * @desc 反射的使用
    * @date 2024/8/7 16:13
    */
    public class _21_new_reflect {
       public static void main(String[] args) throws Exception{
           String a=new Scanner(System.in).nextLine();
           Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
           //获取一个没有参数的构造方法
           Constructor constructor=c.getConstructor();
           Reflect reflect=(Reflect)constructor.newInstance();
           reflect.showString(a);
      }
    }
    class Reflect{
       public Reflect(String a){
           System.out.println(a);
      }
       void showString(String s){
           System.out.println(s);
      }
    }
  3. 通过 Constructor (调用有参构造方法)对象的 newInstance() 方法

    package com.lut.study_java_demo1;

    import java.util.Scanner;

    /**
    * @author Zhou
    * @desc 反射的使用
    * @date 2024/8/7 16:13
    */
    public class _21_new_reflect {
       public static void main(String[] args) throws Exception{
           String a=new Scanner(System.in).nextLine();
           Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
           //获取一个可以是String类型参数的构造方法
           Constructor constructor=c.getConstructor(String.class);
           Reflect reflect=(Reflect)constructor.newInstance("Hello");
           reflect.showString(a);
      }
    }
    class Reflect{
       public Reflect(String a){
           System.out.println(a);
      }
       void showString(String s){
           System.out.println(s);
      }
    }
  4. 获取类的成员变量的信息

    Field[] fields = c.getDeclaredFields();
  5. 获得类方法

    Method[] methods = c.getDeclaredMethods();
  6. 获得构造函数

    Constructor[] constructors = c.getDeclaredConstructors();
  7.  

标签:反射,java,String,System,Reflect,如何,reflect,使用,Class
From: https://www.cnblogs.com/ljwdhxd/p/18347766

相关文章

  • 使用dapper,因错误SQL字串拼接方式 导致的内存泄漏
    作者就职的公司在19年就开始使用.netcore并且部署到Linux上,这些年也遇到不少问题,有些问题都是使用土方法去解决,后面再慢慢写吧,准备将遇到的问题写成一个系列。 前情提要本次的项目是20年上线的储值卡系统,上线后发现内存缓慢增长(半个月涨到4G多),一直没有找到原因就让运维小伙伴......
  • 虚幻5|使用基本的攻击动画
    一,创建输入映射和数据资产1,2,点开数据资产添加映射,attack,输入为鼠标左键3.打开角色蓝图编写代码红圈可以不写是添加武器的文章内容这些变量要创建4.攻击动画蒙太奇是创建的数组,点击这个数组变量,右侧细节栏可添加蒙太奇动画二.创建动画蒙太奇,找到动画序列,右键后找到......
  • MacOS 中Boost的安装和使用
    Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉,值得每位C++程序员学习使用。1安装Boost1.1使用源码安装下载Boost源码解压放在任意目录,例如/usr/local/boost_1_63_0./bootstrap.sh./b2headers./b2留意运行日......
  • 错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
    错误C1128表示生成的对象文件(通常是.obj文件)中包含的节数超过了链接器的限制。这通常发生在项目包含大量代码或使用了大量模板时。解决方法是在编译时使用/bigobj选项。这个选项允许对象文件包含更多的节,从而避免这个错误。在VisualStudio中,可以通过以下几种方式......
  • 再探GraphRAG:如何提升LLM总结能力?
    作者:王振亚编者语:自微软发布GraphRAG之后,相关解读文层出不穷,其中不乏优秀的内容。比如前段时间转载薛明同学的《微软GraphRAG框架源码解读》让大家对GraphRAG的开源代码有了快速的认识。这次我们分享一下来自蚂蚁技术同学王振亚的对GraphRAG如何提升LLM总结能力的思考,作者对Gr......
  • 对象的使用与销毁
    对象的使用与销毁对象的使用创建对象:通过使用new关键字和类的构造器来创建对象。这会分配内存并调用构造器来初始化对象的状态。MyClassmyObject=newMyClass();访问对象:通过对象的引用变量来访问对象的属性和方法。myObject.someMethod();intvalue=myObject.som......
  • 编程小白如何成为大神?大学新生的最佳入门攻略
    编程小白如何成为大神?大学新生的最佳入门攻略编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?让我们一起探讨大学新生入门编程的最佳路径,为你的大学生活和未来职业......
  • 人工智能时代,程序员如何保持核心竞争力?
    人工智能时代,程序员如何保持核心竞争力?随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作,也有人认为AI是提高效率的得力助手。面对这一趋势,程序员应该如何应对?是专......
  • Python使用Memcached示例
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 使用Streamlit构建一个web模拟HTTP请求工具
    目录前言HTTP工具功能点:1.导入库: 2.设置页面配置:3.Markdown格式的说明文本:4.用户输入界面:5.发送请求按钮和逻辑:6.发送HTTP请求并计算请求细节:7.总结 前言    最初就是因为在微信看到一篇文章中,看到此http工具的制作因为觉得Streamlit有无限......