`
xwood
  • 浏览: 103387 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA反射参数传递概略

阅读更多
使用Method反射调用函数时,我们通常会遇到以下几种情况:

1.无参数
 
public void test(){

     System.out.println("函数参数:0");

}

2.指定个数的参数列
  
public void test(String str){

    System.out.println("函数参数:1----------" + str);

}

public void test(String str1, String str2){

    System.out.println("函数参数:2----------" + str1 +"   " + str2);

}

3.可变参数
   
public void test(Object...objs){

    System.out.print("函数参数:" + objs.length + "----------------");

    for(Object o : objs ){

        System.out.print(o.toString() + "    ");

    }

}


而当我们使用Class.getMethod,则需要传递所调用函数的参数类型。查看Class.getMethod 的API可知,需要传递的类型被表示为一个可变参数。

我们知道,传递可变参数时,非序列参数会被编译成编列,即变成一个Object[]类型的数组,但是本身为序列的则会直接被转型Object[]数组。

那么,前两种情况按照要求传递,则传递给getMethod的参数会被转变为一个一维的参数列表的Object数组。第三种情况,其函数本身便要求传递一个可变参数,即一个Object[]类型的参数。如果我们按照正常方法传递,则此Object[]类型的参数会被直接转型使用,而我们最终传给函数的应该是一个二维的Ojbect数组,即Object[][]类型。getMethod方法的匹配过程是指寻找参数长度与Object数组的长度相等,且每个参数类型与Object数组每个数组项相同的方法。
所以,再这种情况下,我们应当对每四种情况下将要传递的参数进行一次包装,将其包装成一个二维的Object数组。方法如下:

            Object[] obj = new Object[1];

        String[] strs = new String[]{"xiao","she", "qing"};

            obj[0] = strs ;


此时的obj则是我们将要传给Class.getMethod的参数,而strs则是我们要传递给调用函数test(Object...objs)的参数。这里的obj长度为1是因为可变参数在没有参数传递之前的检查时的长度为1,被视为一元参数,而具体的可变参数列表则体现在其第一个数组项中,所以这里采用了可变参数传值方式,使用了一个一维数组作为第一个数组项。

由于Spring使用的是Java代理,所以,在Spring中会经常遇到类似的问题。
具体代码见附件!
分享到:
评论

相关推荐

    java基础知识图

    总结了java基础的架构,从JDK安装到反射的知识

    java中的接口概略

    接口是Java中的很重要的一个知识点,首先我们要初步了解从生活中了解“接口”的概念,什么是接口? 1. 生活中的接口 生活中比较常见的接口: USB接口,国标插座,Type-C, 3.5MM, ARJ45, Lighting接口, HDMI, VGA, ...

    GPS广播星历计算卫星概略位置

    标题中的“GPS广播星历计算卫星概略位置”是指通过GPS全球定位系统中广播星历数据来估算卫星的大致位置。GPS系统由一系列地球轨道上的卫星组成,它们不断地广播自己的位置和时间信息,用户设备接收这些信号后可以...

    JAVA程序设计基础

    JAVA程序设计 第一章 计算机语言概述 第二章 Java的开发环境 第三章 Java语言基础 第四章 Java面向对象的程序设计 第五章 异常处理 第六章 Java的可重用类 第七章 Java小应用程序Applet 第八章 用户界面 第九章 ...

    基于卫星概略星历的GPS内部可靠性预报.pdf

    YUMA概略星历参数包括卫星PRN编号、卫星健康状况、轨道平面倾角、偏心率、卫星轨道长半轴的平方根、卫星在轨时间、近地点 幅角、升交点赤经等。这些参数可以用来计算GPS卫星的坐标。 内部可靠性预报方法: 本文提出...

    创业计划书-60万吨醇氨全厂概略流程-GSP图

    《创业计划书-60万吨醇氨全厂概略流程-GSP图》是一个与化工生产相关的文档,主要涉及的是醇氨生产工厂的设计和运营规划。在这个项目中,GSP图(General Stream Process Diagram)是关键,它是一种用来展示化工过程...

    Netbackup 概略介紹

    本概略介绍将涵盖 NetBackup 的核心组件、关键功能以及一些高级选项和代理。 首先,NetBackup 的核心组件包括主服务器(Master Server)、媒体服务器(Media Server)和客户端(Clients)。主服务器是整个系统的...

    预算概略计算表.xls

    预算概略计算表.xls

    从概略到点子.ppt

    从概略到点子.ppt

    文明论概略有感.doc

    文明论概略有感.doc

    概略坐标对GPS PWV解算的影响.pdf

    GPS(全球定位系统)是现代导航和气象观测中的关键技术,尤其在水汽垂直分布的估算中,GPS PWV(GPS precipitable water vapor,即GPS可降水量)是一种重要的气象参数。本文探讨了概略坐标对GPS PWV解算的影响,这...

    项目管理知识体系概略.zip

    - 项目沟通管理:规划、执行和控制项目信息的传递。 - 项目风险管理:识别、分析、应对可能影响项目的风险。 - 项目采购管理:获取外部资源或服务来实现项目目标。 - 项目相关方管理:识别、分析、参与和管理...

    生物特征安全概略构造:理论与实践

    概略一致拒绝率和不一致接收率的界 采 用 纠错码实现了安全概略的构造计算了不同纠错能力下安全概略 一 致<br /> 拒绝率和不一致接收率分析了实际实现算法与理论界限产生差距的原因指出了现有安全概略构造在...

    LINUXCNC源程序概略笔记.pdf

    这是一份对初学者很有帮助的源代码笔记,大概罗列了整个代码框架的功能示意描述,包括一些作者阅读后的笔记摘要;并没有很系统的对整个程序框架进行梳理,不过对初步接触LinuxCNC的人来说,这个也是一份不错的阅读...

    项目管理知识体系概略.ppt

    项目管理知识体系概略.ppt

    侗族良性习惯法概略.doc

    侗族良性习惯法概略.doc

    手机项目管理概略程式

    手机项目管理概略程式是针对手机开发过程中的各个阶段进行详细规划和管理的流程,旨在确保项目的高效执行和成功推出。整个过程分为四个主要阶段:立项阶段、项目开发阶段、项目追踪阶段和阶段性项目资料输出。 立项...

    计算机知识概略和统合

    计算机知识概略与统合,不仅是信息技术领域中的基石,更是构筑我们数字化世界的重要支柱。本文将深入探讨计算机知识概略与统合的核心内容,分析信息科学与技术、计算机科学与技术的相互关系,并探索它们如何结合实践...

Global site tag (gtag.js) - Google Analytics