精华内容
下载资源
问答
  • Java反射 调用传参
    2021-03-13 07:11:23

    //测试方法

    @Test

    public void test01() {

    Class p = null;

    Person01 person01 = new Person01();

    try {

    p = Class.forName("pojo.Person01");

    // 第一个参数是类的方法名 第二个是需要传的参数

    Method method = p.getMethod("returnName", String.class);

    String aa = (String) method.invoke(person01, "123");

    Method method2 = p.getMethod("returnId", Integer.class);

    String bb = (String) method2.invoke(person01, 123);

    // 多个参数

    Class [] argTypes = new Class[2];

    argTypes[0]= String.class;

    argTypes[1] = Integer.class;

    Method methods = p.getDeclaredMethod("getDouble",Integer.class,String.class);

    Object [] objects = new Object[2];

    objects[0] = "test";

    objects[1] = 123;

    String cc = (String) methods.invoke(person01,123,"123");

    System.out.println(aa);

    System.out.println(bb);

    System.out.println(cc);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    更多相关内容
  • JAVA反射参数传递概略

    2019-05-25 02:31:39
    NULL 博文链接:https://xwood.iteye.com/blog/472428
  • java通过反射调用类中方法传参

    千次阅读 2019-07-05 18:38:05
    /** * @author: tianyong * @time: 2019/6/18 18:51 * @description:反射调用方法,获取return值 */ public static String reflectInvokeMethod(Class<?> clazz,String mn,Map params){ ...
    /**
          * @author: tianyong
          * @time: 2019/6/18 18:51
          * @description:反射调用方法,获取return值
          */
        public static String reflectInvokeMethod(Class<?> clazz,String mn,Map params){
            String res = "";
            try {
                Method method = clazz.getMethod(mn,Map.class);
                method.setAccessible(true);
                res = method.invoke(clazz.newInstance(),params).toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return res;
        }

    调用: String res= reflectInvokeMethod(ChartHandle.class, method,params);

    返回的res,即为调用方法的返回值

    如果本文帮到您了,欢迎关注公众号

    展开全文
  • 方法调用 创建一个实例,获取方法调用方法。 package my; import java.lang.reflect.Type; import af.test.Example; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test...

    方法的调用

    创建一个实例,获取方法,调用方法。

    package my;
    
    import java.lang.reflect.Type;
    
    import af.test.Example;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class Test2
    {
    	public static void main(String[] args) throws Exception
    	{
    		//从example.jar中加载一个类,也可以自己传一个类去尝试,里面随便加个void类型的打印一句话就行了
    		// void test1()
    		Class cls = Class.forName("af.test.Example");
    		//创建实例
    		Object obj = cls.newInstance();
    		
    		//tes1没有参数
    		Method testMethod = cls.getDeclaredMethod("test1");
    		//调用这个方法,里面有一句打印		
    		testMethod.invoke(obj);
    		
    		System.out.println("Exit......");
    	}
    }                                    
    

    方法的传参

    package my;
    
    import java.lang.reflect.Type;
    
    import af.test.Example;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class Test2
    {
    	public static void main(String[] args) throws Exception
    	{
    		//从example.jar中加载一个类
    		Class cls = Class.forName("af.test.Example");
    		
    		Object obj = cls.newInstance();
    		
    		//tes2传2个Integer  void test(int a, int b)
    		Class[] in = { Integer.class, Integer.class}; 
    		Method testMethod = cls.getDeclaredMethod("test2", in);
    		//Method method = cls.getDeclaredMethod("test2", Integer.class, Integer.class);
    		
    		Object[] value = {30, 31};
    		testMethod.invoke(obj, value);
    		
    		System.out.println("Exit......");
    	}
    }                                     
    

    方法的返回值

    先创建一个实例(newInstance),然后获取这个实例的某个方法(Method),最后调用这个方法(invoke)

    package my;
    
    import java.lang.reflect.Type;
    
    import af.test.Example;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class Test2
    {
    	public static void main(String[] args) throws Exception
    	{
    		//从example.jar中加载一个类
    		Class cls = Class.forName("af.test.Example");
    		
    		//创建 一个实例
    		Object obj = cls.newInstance();
    		
    		//test2有两个参数  void test2(double a, double b)
    		Class[] argTypes = {double.class, double.class};
    		Method testMethod = cls.getDeclaredMethod("test5", argTypes);
    		
    		//调用这个实例的方法
    		Object[] argValues = {4.3 , 2}; // 会自动包装为两个double对象
    		
    		//在调用obj的testMethod的时候,传入参数 argValues
    		Object result = testMethod.invoke(obj, argValues);
    		
    		//第一种方式:判断一个对象result
    		if(result instanceof Double)
    		{
    			double ret = (double) result;
    			System.out.println("结果为: " + ret);
    		}
    		
    		//第二种方式:判断一个对象result 是否为某个类(或子类)的实例
    		if(Double.class.isInstance(result))
    		{
    			double ret = (double) result;
    			System.out.println("结果为: " + ret);
    		}
    		
    		//第三种方式:比较一个类ccc和另一个是否相同(或是其子类)
    		Class ccc = result.getClass();
    		if(ccc.isAssignableFrom(Double.class))
    		{
    			double ret = (double) result;
    			System.out.println("结果为: " + ret);
    		}
    		
    		//第四种方式:比较一个类ccc和另一个类是否相同
    		if(cls.equals(Double.class))
    		{
    			double ret = (double) result;
    			System.out.println("结果为: " + ret);
    		}
    		
    		
    		System.out.println("Exit.");
    	}
    
    }
                                           
    
    展开全文
  • 通过Java反射机制调用方法

    千次阅读 2021-03-08 05:51:42
    通过Java反射机制调用方法//20210204写在前面:最近再把Java反射和注释知识点过一遍,在这里记一下重要的点,本文讲述反射机制创建对象并调用方法主要任务:使用类反射机制实现对象创建以及方法调用与普通方式实现...

    通过Java反射机制调用方法

    //20210204

    写在前面:最近再把Java反射和注释知识点过一遍,在这里记一下重要的点,本文讲述反射机制创建对象并调用方法

    主要任务:

    使用类反射机制实现对象创建以及方法调用

    与普通方式实现对象创建以及方法调用,并对比二者区别

    程序源代码:

    //此处实现String的反射调用,测试方法为equals方法

    import java.lang.reflect.Constructor;

    import java.lang.reflect.Method;

    import java.lang.reflect.Modifier;

    public class MethodReflection {

    public static void main(String[] args) throws Exception{

    String test = new String("hello world");

    System.out.println(test.equals("hello world"));

    Class st = Class.forName("java.lang.String");

    Constructor con = st.getDeclaredConstructor(String.class);//获取有参构造

    Object obj = con.newInstance("hello world");

    Method[] methods = st.getMethods();

    // for (Method method : methods) {

    // System.out.println(method.getName()+" "+ Modifier.toString(method.getModifiers()));

    // }

    System.out.println(methods[0].getName());

    Object value = methods[0].invoke(obj,"hello world");

    System.out.println(value.toString());

    }

    }

    输出如下:

    对比:

    使用普通方法

    优点:方便

    缺点:不灵活,一旦需求改了就需要改源代码

    使用反射机制

    优点:灵活,可以把关键内容写进配置文件,java文件只是构造一个模板,需求要改的时候更改配置文件即可

    缺点:不方便,程序冗长

    附录:

    小知识点——关于可变长度参数[...]:

    Java中,一个方法可以传入不定长度的参数,使用参数类型+‘...’指定即可

    例:

    //'...'的使用举例

    public static void test(String... args){

    for(Stirng str : args){

    System.out.println(str);//输出传入参数列表

    }

    }

    public static void main(String[] args){

    test("hello","world");

    }

    输出如下:

    以上

    希望对大家有所帮助

    通过Java反射机制调用方法 相关文章

    JavaSE_基本语法学习

    JavaSE_基本语法学习 1.注释 注释有三种: 1. 单行注释//2. 多行注释/**/3. 文档注释 /** */ 2.标识符与关键字 java所有的组成部分都需要名字. 标识符:类名,变量名以及方法名都被称为标识符 关键字:除类名,变量名以及方法名外,其他基本为关键字 //abstract定

    腾讯安全月报丨0误报通过赛可达认证、DDoS威胁报告发布、CASB方案上线……

    腾讯智慧城市安全运营中心获IDC推荐,助力城市安全生态加快融通 1月,《IDC特殊研究:中国智慧城市安全运营中心市场洞察》发布,综合呈现了相关建设现状、实践成果、未来趋势及进阶建议。腾讯智慧城市安全运营中心凭借产品技术实力、方案创新能力及业界最佳实

    Hutool Java 工具类库导出 Excel,超级简单!

    首先在POM.xml中加入GAV dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version5.0.7/version/dependencydependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version4.1.1/version/dependencydependency gro

    JavaScript 代码技巧mark

    分享一些我常用的代码优化技巧,希望对你有帮助。 1. 多表达式多 if 判断 我们可以在数组中存储多个值,并且可以使用数组include方法。 1 // 长2 if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') { //logic}3 // 短4 if (['abc', 'def', 'ghi

    【JAVA】之获取CSV文件数据以及获取Excel文件数据

    一、获取CSV文件数据 import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.testng.SkipException;import org.t

    java-response-乱码解决

    (1)响应体设置文本 PrintWriter getWriter () 获得字符流,通过字符流的 write ( String s) 方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览 器端。 关于设置中文的乱码问题 原因:response缓冲区

    Java注解和反射笔记

    Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些数值 注解可以附加在package,class,method,field上面,可以通过反射机制实现

    Java IO 的分类、使用场景、缓冲流、使用例子、文件拷贝

    1、什么是IO I/O 是指Input/Output,即输入和输出。 Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。 Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。 Java程序在执行

    10年程序员都不一定搞清楚的文件路径

    在 Java 中,文件是很常用的概念,这其中文件路径是一个很基础的内容,因为文件的创建,读取,写入和删除等操作都是依赖于文件路径的。但是你仔细看一下Java中 File 的 API 你会发现有这样三个方法返回路径。 getPath(获取路径) getAbsolutePath(获取绝对

    Java代码中的魔法值

    1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String value) { if ("0".equals(value)) { //todo } else if ("1".equals(value)) { //todo } else { //todo } } 脑壳疼!从Java语法上无懈可击,但是从业务上却让人无法理解其中 0

    展开全文
  • 原标题:Java使用反射调用方法示例本文实例讲述了Java使用反射调用方法。希望对大家有帮助,下面就随动力节点java学院小编一起看看Java使用反射调用方法吧。一 、代码import java.util.*;import java.io.*;import ...
  • 不多说,直接贴代码,不懂查API,现在就列取要用的方法和类。Class类:public Method getDeclaredMethod(Stringname, Class>...parameterTypes) throws NoSuchMethodException, SecurityException返回一个Method...
  • java 反射 调用私有方法(有参数私有方法)获取私有属性值
  • Java 反射调用类的函数,并传递参数

    千次阅读 2019-04-01 20:03:43
    文章目录Java 反射调用类的函数,并传递参数示例 Java 反射调用类的函数,并传递参数 通过类的包路径和函数名称以及已知参数类型,进行传参函数调用 示例 被调用函数 public class Test { public void testInvoke...
  • 1.DynamicExecute工具类: package ... import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.vrv.cems.service.cascade.mq.cor...
  • java反射动态调用传参

    千次阅读 2017-03-11 11:01:37
    import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MethodTest {  public static void main(String[] args)  {  String [] names ={"tom
  • 有时候通过java反射调用方法 会报 java.lang.NoSuchMethodException ,但是进入类里面查看,明明是有这个方法,咋提示没有呢? 这是因为有的方法是私有的,而代码里面是通过 getMethod 方法获取,就会报这个错误。要...
  • package com.heatdeath.fight.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Random; /** * Author: heatdeath * Date: 2018/8/19 * Desc: */ public class SortUti...
  • 代码如下,会发生java.lang.NoSuchMethodException异常。import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import ...
  • java 反射一.java反射拿到调用对象的方法1.通过class.forname(“包名+方法的类名”)拿到方法的对象;如:Class> clazz = Class.forName("ReflectionTest");也可以通过实例,获取方法的对象类,如:String str= ...
  • } } 如果知道反射调用方法需要传几个参数 直接赋值(参数类型.class ) Class perClass=Person.class; String name="reflect"; int age=25; Object newInstance = perClass.newInstance(); Method method...
  • 1. 前言在OOP的世界里,万物皆对象。也就是说,我们可以将任何东西抽象成一个对象。比如人,可以抽象成一个Person类,通过new Person()来实例化一个对象;再比如鸭子,可以抽象成一个Duck类,... Java反射机制概述J...
  • 之前使用反射的方式来调用一个实例的方法,大概代码是如下的String className=""; //类名Class[]params = null;//参数String methodName = "";//方法名Object obj; //调用方法的对象Object[] args; //调用方法传的...
  • importjava.beans.IntrospectionException;importjava.beans.PropertyDescriptor;importjava.lang.reflect.Field;importjava.lang.reflect.Method;public classPropertyUtil {private static final String SET_PREFI...
  • /*** 根据方法名称取得反射方法的参数类型(没有考虑同名重载方法使用时注意)* @param obj 类实例* @param methodName 方法名* @return* @throws ClassNotFoundException*/public static Class[] getMethodParamTypes...
  • 2)运行时调用对象方法。 3)运行时判断对象所属的类; 4)运行时判断任意一个类所具有的成员变量和方法; 5)反射API可以获取程序在运行时刻的内部结构。 6)使用反射的一个最大的弊端是性能比较差。相同的操作...
  • import java.lang.reflect.Method;import java.lang.reflect.Field;import java.beans.PropertyDescriptor;public class PropertyUtil {public static PropertyDescriptor getPropertyDescriptor(Class clazz, Stri....
  • Java 反射 基本数据类型
  • 单测中有个普遍性的问题,被侧类中的private方法无法直接调用。小拽在处理过程中通过反射改变方法权限,进行单测,分享一下,直接上代码。简单被测试类生成一个简单的被测试类,只有个private方法。单测代码...
  • 针对这些的同学,在这分享总结的Java面试的高频面试题(包括了Java集合,JVM,并发与多线程,Spring,MyBaits,微服务,Dubbo,Kakfa,中间件,Redis,数据库,设计模式等),进行了整理,免费分享给大家,希望大家能...
  • 利用Java反射机制调用类的私有方法引言来吧·展示参考链接 引言 如何调用其他类的私有方法呢? 可以利用Java的反射机制,去调用其他类的私有方法 来吧·展示 package cn.learn.stady; import java.lang.reflect....
  • java 反射调用有参方法,并传递参数

    千次阅读 2014-06-30 19:08:40
    Class cla=Class.forName(classpath);...//下面两种方法是等效的,并注意method.invoke方法参数是可变 //Method method = cla.getMethod(requestParam,String.class,int.class); method.invoke(o, new Object
  • 动态传入一个方法名,例如:“getJobName”,获取该对象得值。 public class Test { public static void main(String[] args) throws Exception { InterviewMessage interviewMessage = new InterviewMessage(); ...
  • 不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下 Java面试精选题、架构实战文档传送门:点击这里免费领取 记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,157
精华内容 2,862
关键字:

java反射调用方法传参

java 订阅
友情链接: RC4SourceCodeInC.rar