java反射之方法反射的基本操作方法

发布时间 - 2026-01-11 01:43:14    点击率:

本文接上文“java反射之获取类的信息方法(推荐)”,利用反射(invoke)来获取一个类中的方法来执行。

1、定义一个类,包含三个名称相同,参数不同的方法

class A{
  public void print(){
    System.out.println("Hello,World");
  }

  public void print(int a,int b){
    System.out.println(a+b);
  }
  public void print(String a,String b){
    System.out.println(a.toUpperCase()+","+b.toLowerCase());
  }
}

2、利用方法的反射(invoke)分别获取该类三个方法并执行

public class Test {
  public static void main(String[] args) {
    /**
     * 获取print(int,int)方法
     * 1、获取类的类类型
     */
    A a1 = new A();
    Class clazz = a1.getClass();
    /**
     * 2、获取方法(名称、参数列表)
     * getMethod()获取的是public方法
     * getDeclaredMethod()获取的是自己声明的方法
     */
    try {
//      Method m = clazz.getMethod("print",new Class[]{int.class,int.class});
      Method m = clazz.getMethod("print", int.class, int.class);
      //方法的反射操作,用m对象进行方法调用,a1.print完全相同
      //方法没有返回值返回null,有返回值返回具体的返回值
//      Object obj = m.invoke(a1,new Object[]{10,20});
      Object obj = m.invoke(a1,10,20);

      System.out.println("================================================");

      Method m2 = clazz.getMethod("print", String.class, String.class);
      m2.invoke(a1,"aaa","BBB");

      System.out.println("================================================");

      Method m3 = clazz.getMethod("print");
      m3.invoke(a1);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

3、完整代码

package com.format.test;

import java.lang.reflect.Method;

/**
 * Created by Format on 2017/6/3.
 */
public class Test {
  public static void main(String[] args) {
    /**
     * 获取print(int,int)方法
     * 1、获取类的类类型
     */
    A a1 = new A();
    Class clazz = a1.getClass();
    /**
     * 2、获取方法(名称、参数列表)
     * getMethod()获取的是public方法
     * getDeclaredMethod()获取的是自己声明的方法
     */
    try {
//      Method m = clazz.getMethod("print",new Class[]{int.class,int.class});
      Method m = clazz.getMethod("print", int.class, int.class);
      //方法的反射操作,用m对象进行方法调用,a1.print完全相同
      //方法没有返回值返回null,有返回值返回具体的返回值
//      Object obj = m.invoke(a1,new Object[]{10,20});
      Object obj = m.invoke(a1,10,20);

      System.out.println("================================================");

      Method m2 = clazz.getMethod("print", String.class, String.class);
      m2.invoke(a1,"aaa","BBB");

      System.out.println("================================================");

      Method m3 = clazz.getMethod("print");
      m3.invoke(a1);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

class A{
  public void print(){
    System.out.println("Hello,World");
  }

  public void print(int a,int b){
    System.out.println(a+b);
  }
  public void print(String a,String b){
    System.out.println(a.toUpperCase()+","+b.toLowerCase());
  }
}

4、执行结果

以上这篇java反射之方法反射的基本操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# java反射方法  # Java方法反射实现原理详解  # 的是  # 返回值  # 给大家  # 完全相同  # 希望能  # 这篇  # 方法来  # 小编  # 大家多多  # 操作方法  # 类中  # World  # toLowerCase  # Test  # String  # toUpperCase  # int  # Class  # clazz  # static 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript如何操作浏览器历史记录_怎样实现无刷新导航  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何确认建站备案号应放置的具体位置?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何快速打造个性化非模板自助建站?  Laravel如何配置任务调度?(Cron Job示例)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何在景安服务器上快速搭建个人网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Swift中switch语句区间和元组模式匹配  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何挑选高效建站主机与优质域名?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel怎么判断请求类型_Laravel Request isMethod用法  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  焦点电影公司作品,电影焦点结局是什么?  如何在橙子建站上传落地页?操作指南详解  Bootstrap整体框架之CSS12栅格系统  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  在线教育网站制作平台,山西立德教育官网?  如何在阿里云香港服务器快速搭建网站?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  用v-html解决Vue.js渲染中html标签不被解析的问题  EditPlus中的正则表达式 实战(4)  Laravel Fortify是什么,和Jetstream有什么关系  如何在阿里云通过域名搭建网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel storage目录权限问题_Laravel文件写入权限设置  jQuery中的100个技巧汇总  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  JavaScript如何实现类型判断_typeof和instanceof有什么区别  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何为API生成Swagger或OpenAPI文档  大同网页,大同瑞慈医院官网?  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  原生JS获取元素集合的子元素宽度实例  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何用wdcp快速搭建高效网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?