`
daoshud1
  • 浏览: 556669 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

通过Java反射调用方法

    博客分类:
  • java
阅读更多
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 { 

    /**
     *通过类地址来调用
     */
    public void test() {
		try {
			Class clazz = Class.forName("com.xlwz.wizard.impl.ChooseJdkprocess");
			Method getRootPath = clazz.getDeclaredMethod("getRootPath");
			System.out.println(getRootPath.invoke(clazz.newInstance()));
		} catch (Exception e) {
		}
	}

    public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 
        Foo foo = new Foo("这个一个Foo对象!"); 
        Class clazz = foo.getClass(); 
        Method m1 = clazz.getDeclaredMethod("outInfo"); 
        Method m2 = clazz.getDeclaredMethod("setMsg", String.class); 
        Method m3 = clazz.getDeclaredMethod("getMsg"); 
        m1.invoke(foo); 
        m2.invoke(foo, "重新设置msg信息!"); 
        String msg = (String) m3.invoke(foo); 
        System.out.println(msg); 
    } 
} 

class Foo { 
    private String msg; 

    public Foo(String msg) { 
        this.msg = msg; 
    } 

    public void setMsg(String msg) { 
        this.msg = msg; 
    } 

    public String getMsg() { 
        return msg; 
    } 

    public void outInfo() { 
        System.out.println("这是测试Java反射的测试类"); 
    } 
}

调用静态方法
public static void Test(){
		System.out.println("123");
	}
	
	public static void main(String[] args) throws Exception {
		Class c; 		
		c = Class.forName("link.Test3"); 		
		Method m = c.getMethod("Test"); 		
		m.invoke(c); 
	}

控制台输出结果:
这是测试Java反射的测试类 
重新设置msg信息! 

Process finished with exit code 0 

http://lavasoft.blog.51cto.com/62575/61002
分享到:
评论

相关推荐

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    Java反射调用方法

    在给定的代码中,`TestRef` 类展示了如何使用Java反射调用方法。首先,我们创建了一个 `Foo` 类,它有一个私有字符串成员变量 `msg` 和三个方法:`setMsg`、`getMsg` 和 `outInfo`。`main` 方法是演示反射调用的入口...

    java 反射 调用私有方法(有参数私有方法)获取私有属性值

    Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这个能力使得开发者可以突破静态类型的束缚,实现一些在编译时期无法完成...

    通过反射调用静态方法

    本文将详细讲解如何通过反射调用静态方法,并探讨在特定场景下,如MyBatis中的应用。 首先,理解反射的概念是至关重要的。在Java中,反射API(java.lang.reflect)允许我们获取类的信息,包括类名、构造函数、方法...

    Java 反射创建get set方法及反射方法的调用

    本文介绍了如何使用Java反射机制来创建get和set方法,并通过反射调用这些方法来访问对象的属性。这种方式虽然灵活,但在实际开发中应当谨慎使用,因为它可能会降低代码的性能和可维护性。了解反射机制的基本原理对于...

    Java反射调用工具类

    6. **参数匹配**:在反射调用方法时,需要正确匹配参数类型,否则可能会抛出`IllegalAccessException`或`IllegalArgumentException`。 7. **异常处理**:反射操作容易抛出异常,如`ClassNotFoundException`、`...

    java动态调用方法

    总的来说,Java动态调用方法通过反射机制实现了运行时对类和方法的动态操作,这在许多场合都有用武之地,如插件系统、自动化测试、元编程等。然而,由于反射的特性,也需要注意其可能带来的安全问题和性能影响。在...

    java反射调用实例代码

    这个资源“java反射调用实例代码”提供了关于如何使用Java反射API进行各种操作的实际示例。 在Java中,`java.lang.reflect`包提供了对反射的支持,包括`Class`类,`Constructor`类,`Method`类和`Field`类。这些类...

    Java反射方法调用

    Java反射机制是Java语言提供的一种强大的工具,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性在处理不确定类型的对象或者实现动态代理等场景中非常有用。...

    java 反射得到某个方法

    例如,当我们需要对未知类型的对象进行通用操作,或者需要在运行时动态调用方法时,反射就显得非常有用。 然而,尽管反射提供了很大的灵活性,但也要注意其潜在的风险。过度使用反射可能导致代码难以理解和维护,...

    frida反射调用对象中的方法与字段.pdf

    在Frida的上下文中,反射调用通常涉及到几个关键的Java反射API: - `getDeclaredFields`:这个方法可以用来获取对象的所有声明字段,包括公有、保护、默认(包)访问和私有字段,但不包括继承的字段。 - `...

    Java 反射调用设置值

    Java 反射调用设置值

    java反射调用封装接口

    万能的反射封装接口,值得下载参考,当成util

    关于反射调用方法的一个log

    这篇博文“关于反射调用方法的一个log”可能涉及了如何利用Java反射API来动态地调用类的方法,这在处理不确定的类结构或者在元编程场景中十分常见。 在Java中,`java.lang.reflect`包提供了反射相关的类和接口,如`...

    java反射调用

    java反射调用set方法时如果让参数做自动类型转换5 这段时间学习java的反射机制想实现一个功能:遍历一个Map,然后利用反射机制调用BO的set方法,完成BO属性的自动注入。这样设计的初衷是解决Excel数据导入问题中的...

    通过java类的路径实例化类并调用方法

    通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法

    利用java反射调用实现对字符串的解析,成功调入函数,并且返回值

    在这个场景中,我们关注的是如何利用Java反射调用来解析字符串并执行相关函数,最终获取返回值。下面将详细阐述这个过程。 首先,`ReflectUtils.java` 文件可能包含了一些静态方法,这些方法提供了反射操作的便利...

    JAVA反射机制的入门代码

    4. **调用方法**:使用`Class`对象的`getMethods()`或`getDeclaredMethods()`获取公共或私有方法,然后通过`Method`对象的`invoke()`方法执行这些方法。对于静态方法,可以不传入对象;对于非静态方法,需要传入对应...

    groovy和Java相互调用1

    这种方法的优点是Groovy脚本的修改不需要重新编译整个项目,因为Java代码可以通过反射动态地找到并调用Groovy方法。这里,我们首先创建一个`GroovyClassLoader`来解析Groovy源文件,然后通过`newInstance`方法实例化...

    java反射 java反射 java反射java反射

    - `b.setPwd()`, `b.setAcc()`通过反射调用了`AA`类的方法。 - `testshow(b)`可能是一个用于显示对象信息的自定义方法。 - `Class o=Class.forName("testf.AA")`获取`AA`类的`Class`对象,`o.getName()`返回类的...

Global site tag (gtag.js) - Google Analytics