通过JAVA反射,调用未知类的类方法

下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子

package com.togeek.mvntest;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
 * @author togeek 利用反射调用方法
 * @address http://www.cnblogs.com/togeek/
 * @Date: 2015年11月29日18:01:31
 */
public class RefTest {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        Apple apple = new Apple();
        apple.setName("我是苹果");
        System.out.println("正常调用:"+apple.getName());
        Class appleClass = apple.getClass();
        Method m1 = appleClass.getDeclaredMethod("getName");
        Method m2 = appleClass.getDeclaredMethod("setName", String.class);
        System.out.println("反射调用:"+m1.invoke(apple));
        System.out.println("反射set值:返回值为null----"+ m2.invoke(apple, "我是送给togeek的苹果!"));
        System.out.println("再次调用:"+m1.invoke(apple));
    }
}
class Apple{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

结果:

正常调用:我是苹果
反射调用:我是苹果
反射set值:返回值为null----null
再次调用:我是送给togeek的苹果!
时间: 2024-10-22 22:08:14

通过JAVA反射,调用未知类的类方法的相关文章

java黑魔法-反射机制-02-通过Java反射调用其他类方法

package com.aaron.reflect; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; /** * Created by IntelliJ IDEA. * File: TestRef.java * User: leizhimin * Date: 2008-1-28 14:48:44 */ public class TestRef { //直接 foo.outIn

java反射调用方法

1:Class类中的方法 public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException 参数: name - 方法名 parameterTypes - 参数数组 返回: 该类与指定名和参数相匹配的方法的 Method 对象 2:Method类中的方法; public Object invoke(Object obj,

Java 反射调用私有域和方法(setAccessible)

Java 反射调用私有域和方法(setAccessible) @author ixenos AccessibleObject类 Method.Field和Constructor类共同继承了AccessibleObject类,该基类有两个setAccessible方法能在运行时压制Java语言访问控制检查(Java language access control checks),从而能任意调用被私有化保护的方法.域和构造方法 public class AccessibleObjectextends

C#反射调用程序集类中方法

建立类 class OperatorClass { /// <summary> /// 加法 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> /// public static int Add(int x, int y) { r

JAVA反射之CLass类的练习

1 package zhang; 2 /** 3 * JAVA反射之CLass类的练习 4 * 5 * 在面向对象的语言里,万事万物皆对象,那么类是谁的对象呢? 6 * 类的类型是CLass 7 * 8 * */ 9 class Test{ 10 void print(){ 11 System.out.println("Hello world!"); 12 } 13 }//Test是一个类. 14 public class ClassDemo { 15 public static vo

java通过反射调用实现类

1.调用实现类 package com.commons.util; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @SuppressWarnings("all") public class ReflectionUtil { public static Object getBean(String className) { try { Class cls =

Java反射机制Class类的用法详解

本文转自http://blog.sina.com.cn/s/blog_6c9536b90100rqh4.html,感谢作者 java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关java中Class类的相关知识! java.lang.Class是一个比较特殊的类,它用于封装被装入到JVM中的类(包括类和接口)的信息. 当一个类或接口被装入的JVM时便会产生一个与之关联的java.lang.Class对象,可以通过这个Class对象

【java】java反射初探 ——“当类也照起镜子”

反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强大的API“反射“类的结构. 打个比方,反射机制就像是一面镜子,而类就像是一个在照着镜子的人. 镜子(反射机制)照出(反射)了人的全貌(类的全方位的信息,例如方法,成员变量和构造器等的相关信息) 为什么要照镜子? 因为不照镜子看不清楚自己的全貌,“镜子”就是为了解决这个问题出现的(为我们提供全面分析类的能力) 好吧

Java反射初探 ——“当类也学会照镜子”

反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强大的API“反射“类的结构. 打个比方,反射机制就像是一面镜子,而类就像是一个在照着镜子的人. 镜子(反射机制)照出(反射)了人的全貌(类的全方位的信息,例如方法,成员变量和构造器等的相关信息) 为什么要照镜子? 因为不照镜子看不清楚自己的全貌,“镜子”就是为了解决这个问题出现的(为我们提供全面分析类的能力) 好吧