`
yinwufeng
  • 浏览: 287036 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

getMethod()和invoke()方法应用

阅读更多

getMethod()和invoke()方法应用

一个简单的需求的实现:
在程序中调用某类的某方法,并将返回结果println() 出来。
实现方法:

MethodTest.java
import java.util.ArrayList;
import java.util.List;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

/** *//**
 * 功能描述:
 *
 * 
@author <a href='mailto:vesung@gmail.com'>wangjing</a>
 * Copyright: Copyright (c) 2006-2008 by vesung.cn.
 * Date: 2008-1-23 14:13:26
 
*/

public class MethodTest{
    TestVO vo 
= new TestVO();

    
/** *//**
     * 初始化vo
     
*/

    
protected void setUp(){
        vo.setInvoiceSortCode(
"InvoiceSortCode");
        vo.setInvoiceSortName(
"InvoiceSortName");
        vo.setOperaddress(
"Operaddress");
        vo.setStockStatus(
"StockStatus");
        vo.setStockStatusCode(
"StockStatusCode");
        List list 
= new ArrayList();
        list.add(
"StockStatusList");
        vo.setStockStatusList(list);
        vo.setTaxpayerName(
"TaxpayerName");
        vo.setTaxRegCode(
"TaxRegCode");
    }


    
public static void main(String[] args) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        MethodTest m 
= new MethodTest();
        m.setUp();
        
//待执行的方法名称注意没有()
        String methodName = "getInvoiceSortCode";

        
//先获取相应的method对象
        
//getMethod第一个参数是方法名,第二个参数是该方法的参数类型,
        
//因为存在同方法名不同参数这种情况,所以只有同时指定方法名和参数类型才能唯一确定一个方法
        Method method = m.vo.getClass().getMethod(methodName,new Class[0]);
        
//接下来就该执行该方法了,解释一下参数
        
//第一个参数是具体调用该方法的对象
        
//第二个参数是执行该方法的具体参数
        System.out.println(methodName+"():"+method.invoke(m.vo,new Object[0]));
    }

}

TestVO.java
import java.util.List;

/** *//**
 * 功能描述:
 *
 * 
@author <a href='mailto:vesung@gmail.com'>wangjing</a>
 * Copyright: Copyright (c) 2006-2008 by vesung.cn.
 * Date: 2008-1-23 14:17:14
 
*/

public class TestVO {
    
private String taxRegCode;
    
private String stockStatusCode;
    
private String stockStatus;
    
private List stockStatusList;
    
private String taxpayerName;
    
private String operaddress;
    
private String invoiceSortCode;
    
private String invoiceSortName;
    
public String pub;

        public String getInvoiceSortCode(){
                return InvoiceSortCode;
        }
//省略getter(),setter()
//  
}
分享到:
评论

相关推荐

    Invoke反射

    5. **配置驱动的代码**:根据配置文件中的类名和方法名进行动态调用。 然而,尽管反射提供了极大的灵活性,但也有一些需要注意的事项: 1. **性能开销**:反射操作比直接静态调用要慢,因为它涉及更多的运行时查找...

    Java反射方法调用

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

    Java方法反射调用demo

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

    C#反射简单入门实例

    在C#中,System.Reflection命名空间提供了所有与反射相关的类和方法。 2. 获取类型信息 要获取类型信息,我们首先需要通过Type类。我们可以使用typeof运算符或Assembly类的GetTypes方法。例如,`typeof(MyClass)`将...

    java 反射得到某个方法

    通过`Class.forName()`获取Class对象,再利用`getMethod()`获取方法,最后使用`invoke()`执行方法。在实际开发中,理解并谨慎使用反射,能够帮助我们编写出更加灵活和强大的代码。但同时,也要注意其带来的潜在问题...

    反射动态调用DLL方法,含参数

    - 获取类型:使用加载的Assembly对象的GetTypes方法获取DLL中的所有类型,或者使用Type类的GetMethod方法根据方法名和参数类型获取特定方法。 - 创建实例:如果DLL中包含非静态方法,需要使用Activator类的静态...

    JAVA反射机制应用

    JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态调用对象的方法的...

    C#反射工厂演示程序包(c#+cs+vs2005)

    2. 实例化对象:通过Type的GetMethod和Invoke方法,可以获取和调用非静态方法。对于静态方法,直接通过Type对象调用即可。动态创建对象使用Activator.CreateInstance方法。 3. 访问属性和字段:使用PropertyInfo和...

    Android获取应用程序的包大小\缓存大小\数据大小

    在Android开发中,有时我们需要获取应用程序的包大小、...以上就是利用反射和AIDL获取Android应用程序包大小、缓存大小和数据大小的方法。在实际应用中,需要注意性能和权限的管理,确保用户体验的同时满足功能需求。

    GetProperty_java(cusTag).txt

    - 调用`getMethod.invoke(obj)`来执行该getter方法并获取属性值。 - 将属性值通过`pageContext.getOut().print()`输出到JSP页面上。 - **doEndTag**: - 此方法也是`BodyTagSupport`接口中的抽象方法,必须被...

    C#反射(晚期绑定+插件)

    2. Object的InvokeMethod方法:可以通过Type实例的GetMethod和Invoke方法动态调用对象的方法,即使在编译时不知道确切的类型。 四、反射与插件架构 1. 动态加载:使用Assembly.LoadFrom()或Assembly.Load()可以加载...

    C# 加载Dll 使用反射 调用对应的方法公开方法,私有方法,泛型方法

    在.NET框架中,C#提供了一种强大的编程技术——反射,它...在`Study.Reflect`这个压缩包文件中,可能包含了相关的示例代码和练习,帮助你更好地理解和应用上述概念。通过实际操作,你可以更深入地掌握C#的反射机制。

    反射机制例子及反射方法调用

    首先,我们使用Class.forName()方法将字符串形式的类名转换为Class对象,然后我们使用getMethod()方法获取该类的方法,最后,我们使用invoke()方法调用该方法。 在这个例子中,我们可以看到反射机制的强大之处,它...

    自定义委托+反射,通过字符串动态调用类和类方法

    现在,将自定义委托与反射结合起来,我们可以实现动态调用类和方法的功能。假设我们有一个如下的类: ```csharp public class DynamicClass { public void MethodToCall(string message) { Console.WriteLine($...

    c# 反射应用几乎最全面的实例

    关键类和方法: 1. Type类:表示.NET框架中的任何类型。你可以通过Assembly.GetTypes()或typeof()操作符获取Type对象。 2. Assembly类:代表一个已加载的.NET程序集,包含类型和其他资源。 3. ConstructorInfo类:...

    java动态调用方法

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

    Sev.Reflection.rar_C# 反射 封装_反射_反射应用封装

    7. **其他类和方法**: `AboutBox1.cs`, `FrmBoxTest.cs`, `AboutInfo.cs`, `Program.cs`等文件分别可能包含应用程序的特定功能实现,如关于对话框、测试窗体、自定义信息类和主程序入口点。 综上,"Sev....

    C#反射示例 动态生成方法

    在.NET编程环境中,C#反射是一个强大的特性,它允许程序在运行时检查自身,并能动态地...通过学习这个示例,开发者可以更好地理解如何在自己的应用程序中利用反射来实现灵活的代码逻辑,提高程序的动态性和可扩展性。

    反射获取属性调用方法反射获取属性调用方法

    在Java或.NET编程环境中,反射是一种强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。反射获取属性和调用方法是其核心功能,广泛应用于框架设计、动态代理、插件机制等领域。下面将详细解释这...

    反射Reflection小应用

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以动态地创建对象、调用方法、访问字段,甚至处理私有成员,这在某些情况下非常...

Global site tag (gtag.js) - Google Analytics