• java反射--方法反射的基本操作


    方法的反射

    1)如何获取某个方法

    方法的名称和方法的参数列表才能唯一决定某个方法

    2)方法反射的操作

    method.invoke(对象,参数列表)

    代码实例:

    package com.reflect;
    import java.lang.reflect.Method;
    
    public class MethodDemo1 {
        
        public static void main(String []args) throws Exception
        {
            /*
             * 要获取print(int,int)方法
             * 1,要获取方法,就是获取类的信息,获取类的信息,首先要获取类的类类型
             * */
            A a1=new A();
            Class c=a1.getClass();
            /*
             * 2,获取方法  名称和列表参数决定
             * getMethod获取的是public的方法
             * getDeclaredMethod获取自己声明的方法
             * */
            //第一种方式:c.getMethod("print", new Class[] {int.class,int.class});
            Method m=c.getMethod("print",int.class,int.class);
            /*
             * 方法的反射操作
             * 方法的反射操作是用m对象来进行方法调用和a1.print调用效果完全相同
             * 方法如果没有返回值返回null,有返回值返回具体的返回值给O,后续自己转型
             * */
            //第一种方式:Object o=m.invoke(a1, new Object[] {10,20});
            Object o=m.invoke(a1,10,20);
            System.out.println("=============================");
            
            //按照第一个方法调用方式,调用第二个方法
            Method m2=c.getMethod("print",String.class,String.class);
            o=m2.invoke(a1,"hello","word");
            
            //第三种无参数的方法调用
            Method m3=c.getMethod("print");
            o=m3.invoke(a1);
        }
    }
    class A
    {
        
        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());
        }
        
        public void print()
        {
            System.out.println("hello word");
        }
    }
  • 相关阅读:
    [Intellij] 软件设置和常用快捷键
    [Intellij] Project Structure 配置说明
    [日志log] 常用log日志记录方式对比和详解
    [J2EE]web.xml各个版本模板
    [技术选型] CDH-Cloudera Distribution Hadoop
    [技术选型] dubbo
    [技术选型] spring boot
    [hbase] HBase内置过滤器的一些总结
    [zookeeper] Zookeeper伪分布式集群配置
    [maven] settings 文件 本地maven仓库
  • 原文地址:https://www.cnblogs.com/alsf/p/8245516.html
Copyright © 2020-2023  润新知