zoukankan      html  css  js  c++  java
  • 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");
        }
    }
  • 相关阅读:
    关于C_Sharp集中处理异常
    关于Java连接SQL Sever数据库
    MongoDB 的主键 _id 为什么不是自增数字
    svn 命令行基本操作
    如何删除 Git 仓库中的历史提交记录
    .git 文件太大时怎样处理
    Git 提交到多个远程仓库
    Git SSH keygen 生成与配置
    Git 远端回滚
    Git 合并或修改线上 commit
  • 原文地址:https://www.cnblogs.com/alsf/p/8245516.html
Copyright © 2011-2022 走看看