`

java invoke 反射的使用方法

    博客分类:
  • java
阅读更多
java invoke:动态调用类的方法
这个的例子,用在导入数据的时候,可以灵活的使用。很方便、实用。
1.User.java
view plain
package cvr.vo; 
 
public class User { 
     
    private String username; 
     
    private String password; 
     
    private Integer value1,value2,value3,value4,value5,value6,value7,value8,value9,value10; 
 
    public String getPassword() { 
        return password; 
    } 
 
    public void setPassword(String password) { 
        this.password = password; 
    } 
 
    public String getUsername() { 
        return username; 
    } 
 
    public void setUsername(String username) { 
        this.username = username; 
    } 
 
    public Integer getValue1() { 
        return value1; 
    } 
 
    public void setValue1(Integer value1) { 
        this.value1 = value1; 
    } 
 
    public Integer getValue10() { 
        return value10; 
    } 
 
    public void setValue10(Integer value10) { 
        this.value10 = value10; 
    } 
 
    public Integer getValue2() { 
        return value2; 
    } 
 
    public void setValue2(Integer value2) { 
        this.value2 = value2; 
    } 
 
    public Integer getValue3() { 
        return value3; 
    } 
 
    public void setValue3(Integer value3) { 
        this.value3 = value3; 
    } 
 
    public Integer getValue4() { 
        return value4; 
    } 
 
    public void setValue4(Integer value4) { 
        this.value4 = value4; 
    } 
 
    public Integer getValue5() { 
        return value5; 
    } 
 
    public void setValue5(Integer value5) { 
        this.value5 = value5; 
    } 
 
    public Integer getValue6() { 
        return value6; 
    } 
 
    public void setValue6(Integer value6) { 
        this.value6 = value6; 
    } 
 
    public Integer getValue7() { 
        return value7; 
    } 
 
    public void setValue7(Integer value7) { 
        this.value7 = value7; 
    } 
 
    public Integer getValue8() { 
        return value8; 
    } 
 
    public void setValue8(Integer value8) { 
        this.value8 = value8; 
    } 
 
    public Integer getValue9() { 
        return value9; 
    } 
 
    public void setValue9(Integer value9) { 
        this.value9 = value9; 
    } 
 


2.Go.java
view plain
package cvr.go; 
 
import java.lang.reflect.Method; 
import java.util.ArrayList; 
import java.util.List; 
 
import cvr.vo.User; 
 
public class Go { 
 
    public static void main(String[] args) { 
        int [] vals = new int[]{1,2,3,4,5,6,7,8,9,10}; 
        User user = Go.setUserValues(vals); 
        List list = Go.getUserValues(user); 
        for (int i = 0; i < list.size(); i++) { 
            int j = i+1; 
            System.out.println("value" + j + "=" + list.get(i)); 
        } 
    } 
     
    public static User setUserValues(int [] vals) { 
        User user = new User(); 
        try { 
            //获取Class的对象 
            Class c = user.getClass(); 
            for (int i = 1; i <= 10; i++) { 
                //动态获取方法名 
                String methodName = "setValue"+i; 
                //设置方法的参数 
                Class[] args = new Class[1]; 
                Integer u = new Integer(3); 
                args[0] = u.getClass(); 
                Method method = c.getMethod(methodName, args); 
                //调用方法 
                method.invoke(user, vals[i-1]); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return user; 
    } 
     
    public static List getUserValues(User user) { 
        List list = new ArrayList(); 
        try { 
            Class c = user.getClass(); 
            for (int i = 1; i <= 10; i++) { 
                String methodName = "getValue"+i; 
                Method method = c.getMethod(methodName, null); 
                Integer s = (Integer) method.invoke(user, null); 
                list.add(s); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return list; 
    } 
     
分享到:
评论

相关推荐

    Java方法反射调用demo

    本示例将深入探讨如何使用Java反射进行各种方法的调用。 首先,让我们从调用无参数的方法开始。在Java中,我们可以通过`Class`对象的`getMethod`方法获取到指定的公共方法,然后通过`invoke`方法调用它。例如: ``...

    Invoke反射

    【Invoke反射】是一种在.NET框架中使用的重要编程技术,它属于C#或.NET中的动态编程范畴,主要基于System.Reflection命名空间。反射允许程序在运行时检查自身的信息,并且能够动态地创建对象、调用方法、访问属性和...

    java 反射得到某个方法

    在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...

    java反射机制及Method.invoke解释

    在 Java 反射机制中,我们可以通过 Method 对象的 invoke 方法来执行某对象的方法,这个方法的返回值是 Object 类型的,可以是基本类型、数组、集合等各种类型。 Java 反射机制提供了一种动态获取类信息和执行对象...

    Java反射调用方法

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

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

    以下是如何使用Java反射来调用私有方法并获取私有属性值的详细步骤: 1. **获取Class对象**:首先,我们需要获取到目标类的Class对象,这可以通过`Class.forName()`方法或者对象的`getClass()`方法来实现。例如,...

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

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

    java 反射的使用

    以下是对Java反射使用及相关知识点的详细阐述: 1. **获取Class对象** - `Class.forName(String className)`: 通过全限定类名获取Class对象。 - `object.getClass()`: 对象的`getClass()`方法返回该对象的Class...

    java反射,获取所有属性、方法以及List集合类

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

    JAVA反射机制的入门代码

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

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

    在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。本文将深入探讨Java反射的相关知识点。 1. 常用`Class`类方法: - `Class.forName(String ...

    java反射机制,调用私有方法

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。这种动态类型的能力使得Java代码能够处理未知或未提前定义的对象,增强了程序的灵活性和可扩展性。在Java中...

    java反射机制详解及Method.invoke解释.pdf

    在 Java 反射机制中,Method.invoke() 方法是非常重要的。该方法可以用来调用对象的方法。例如,要执行某个对象的方法,可以使用 Method 对象的 invoke() 方法来调用该方法。该方法的参数是执行该方法的对象和参数...

    java反射基本方法测试

    此外,不恰当的反射使用可能导致安全问题,因为反射可以绕过正常的访问控制。 九、实际应用 12. 反射在很多场景下非常有用,如: - 动态加载和执行代码。 - 实现插件系统,允许程序在运行时加载未知类。 - ORM...

    Java反射方法调用

    在这个主题中,我们将深入探讨如何使用Java反射来调用不同类型的参数方法,包括无参方法、Object类型参数的方法、基本类型参数的方法以及数组参数的方法,以及如何调用私有方法。 首先,要调用无参方法,我们可以...

    java面试题--反射机制

    - **调用方法**:使用`Method`对象的`invoke()`方法。 #### 八、示例代码 下面通过一个简单的示例展示如何使用Java反射机制: ```java import java.lang.reflect.Constructor; import java.lang.reflect.Field; ...

    java例子 java反射

    在给出的“JavaClass”示例中,可能包含了一个或多个展示如何使用Java反射的代码片段,可能涉及到创建`Class`对象、获取和调用方法、访问字段等内容。通过分析这些例子,你可以更深入地理解Java反射的使用方式及其在...

    Java 1.5 反射机制

    Java 1.5引入的反射机制是其动态性的一个重要体现,它允许程序在运行时检查和操作类、接口、对象及其方法。反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理...

    java反射.pdf

    Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用方法、获取类的信息等。 #### 二、如何创建反射类? ...

Global site tag (gtag.js) - Google Analytics