用方法对象进行反射

package com.mysec.reflex;

import java.lang.reflect.Method;

public class MethodDemo {

public static void main(String[] args) {
        //要获取print(int,int)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
        A a = new A();
        Class<?> c = a.getClass();
        /**
         * 获取方法名称和参数列表来决定
         * getMethod获取的是public的方法
         * getDeclaredMethods获取的是自己声明的方法
         */
//        c.getDeclaredMethods();
        try {
//            Method method = c.getMethod("print", new Class[]{int.class,int.class});
            Method method = c.getMethod("print",int.class,int.class);//获取方法对象
            //方法的反射操作
//            a.print(1, 2);//方法的反射操作是用method对象来进行方法调用和a.print调用的效果相同
            //如果没有返回值返回null,有返回值返回具体的返回值
            Object o = method.invoke(a, new Object[]{1,2});//用方法进行反射操作
//            Method method2 = c.getMethod("print");
            Method method2 = c.getMethod("print", new Class[]{});
//            method2.invoke(a, new Object[]{});
            method2.invoke(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
}

class A{
    public void print(){
        System.out.println("ptint");
    }
    public void print(int a,int b){
        System.out.println(a+b);
    }
    public void print(String a,String b){
        System.out.println(a+b);
    }
}

时间: 2024-11-10 00:01:32

用方法对象进行反射的相关文章

Class对象与反射机制的学习

刚对java反射机制进行了学习,在此做一个总结. 总结分为三部分,一.介绍java的Class类概念,二.进一步介绍通过Class类我们可以获取关于类的哪些信息,三.反射方法的基本操作 在这之前,我们的脑海中一定要牢记如下一句话:“万物皆对象!” 这句话可以贯穿本节始终,帮助我们站在一个高度理解这部分内容. 一.java的Class类概念 万物皆对象,那么对于面向对象语言java,我们就可以自然补充出下一句,万物皆有类,因为每个对象实例都有他所属于的类别. 那么对于我们代码中的String, D

深入理解Java类型信息(Class对象)与反射机制(干货)

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/70768369 出自[zejian的博客] 本篇主要是深入对Java中的Class对象进行分析,这对后续深入理解反射技术非常重要,这篇有点偏向内功类文章,主要内容如下: 深入理解Class对象 RRTI的概念以及Class对象作用 Class对象的加载及其获取方式 Class对象的加载 ClassforName方法 Class字面常

c#设置对象属性——反射实体设置变量

前台如果只传递了一两个数据,在后台请求获取数据设置属性值还能够接受,但是如果传递了大量的数据,就得多次HttpRequest reques[“XXX”]请求获取数据设置属性值,输入的代码量就很大,而且相当耗费时间,这种费时费力的方法是难以接受的.下面为大家提供一个取巧的方法,获取请求数据就变的很简单了,而且可以节省时间.话不多说,直接上代码: C#代码如下: /// <summary> /// 设置对象属性——反射实体设置变量 /// </summary> /// <para

Java基础 -- 深入理解Java类型信息(Class对象)与反射机制

一 RTTI概念 认识Claa对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RTTI的说法则是源于<Thinking in Java>一书,其作用是在运行时识别一个对象的类型和类的信息,这里分两种: 传统的”RTTI”:它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类型,如new对象时该类必须已定义好): 反射机制,它允许我们在运

Python3.2官方文档翻译--实例对象和方法对象

6.3.3 实例对象 如今我们用实例对象做什么呢?实例对象唯一可用的操作就是属性引用.如今有两种合法的属性名称:数据属性和方法. 数据属性相当于smallTalk中的实例变量,C++中的数据成员.数据属性不须要申明.像局部连梁一样,当他们初次赋值的时候他们就存在了.比如,假设x是上面创建MyClass类的一个实例, 以下的代码块表示将会打印值16.这个值没有不论什么错误. x.counter = 1 while x.counter < 10: x.counter = x.counter*2 pr

java.lang.reflect.Method.getAnnotation()方法示例【通过反射获取到方法对象再获取方法对象上的注解信息】

转: java.lang.reflect.Method.getAnnotation()方法示例 java.lang.reflect.Method.getAnnotation(Class <T> annotationClass)方法如果存在这样的注释,则返回指定类型的元素的注释,否则为null. 声明 以下是java.lang.reflect.Method.getAnnotation(Class <T> annotationClass)方法的声明. public <T exte

Python-面向对象之反射

反射 实现了动态的装配,通过字符串来反射类中的属性和方法. 一.hasarttr(obj,name_str) 作用:判断一个对象obj中是否有对应的name_str字符串的属性或者方法. class Dog(object): def __init__(self, name): self.name = name def eat(self, food): print("%s is eating %s" % (self.name, food)) d = Dog("Tom"

深入理解Java类型信息(Class对象)与反射机制

深入理解Class对象 RRTI的概念以及Class对象作用 认识Class对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RRTI的说法则是源于<Thinking in Java>一书,其作用是在运行时识别一个对象的类型和类的信息,这里分两种:传统的"RRTI",它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类

Class对象即反射

Class对象 当ClassLoader加载一个class文件到JVM的时候,会自动创建一个该类的Class对象,并且这个对象是唯一的,后续要创建这个类的任何实例,都会根据这个Class对象来创建.因此每当加载一个class文件的时候,都会创建一个与之对应的Class对象. 加载:就是指将class文件读入内存,并为之创建一个Claass对象. 任何类被使用时系统都会建立一个Class对象 反射 反射是指在程序的运行期间动态的去操作某个Class对象里面的成员(包括类信息.属性信息.方法信息等元