Java 反射-反射的基本操作

  以前,我们调用一个类里面的方法,通常通过对象名来进行操作。今天我们通过反射机制来调用类里面的方法,包括私有的方法也可以调用。

package com.example.Reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MethodDemo1 {
    public static void main(String[] args) {
        A a = new A();
        Class c1 = a.getClass();
        /**
         * 通过getMethod
         */
        try {
            /**获得print(int , int)方法
             * 
             */
            //Method method = c1.getMethod("print", new Class[]{int.class, int.class});
            Method method = c1.getMethod("print", int.class, int.class);
            /**
             * 如果方法返回值类型为空的话,则下面的调用返回的值null
             * 否则返回的是Object的对象
             */
            //Object invoke = method.invoke(a, new Object[]{10, 20});
            Object invoke = method.invoke(a, 10, 20);
            
            /**
             * 获得print()方法
             */
            //method = c1.getMethod("print");
            method = c1.getMethod("print", new Class[]{});
            //method.invoke(a);
            method.invoke(a, new Object[]{});
        } catch (NoSuchMethodException | SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            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 + ", " + b);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,539评论 25 709
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,418评论 11 349
  • 国庆长假初始,四个朋友家庭如约齐聚西山牛仔安住山庄。 爸爸妈妈们聚在一起有聊不完的话题,孩子们则有玩不完的游戏。在...
    纳尼亚星语阅读 764评论 0 0
  • 《夕阳与光辉》 我想要晚霞的红与黄落在身上 日暮时的安详是金黄色的香味 斑驳的墙壁上涂满了她的影子 西风一吹 吹散...
    九五乾谦阅读 558评论 1 10
  • 并不是所有的linux压缩包都是.tar.gz的(请相信我_),你还会发现有一类文件的后缀是.tar.bz2的(这...
    shuff1e阅读 502评论 0 0