java.lang.reflect.Method
public Object invoke(Object obj, Object... args)
参数:
obj:从中调用底层方法的对象,必须是实例化对象
args: 用于方法调用,是一个object的数组,因为参数有可能有多个
返回:
使用参数args在obj上指派该对象所表示的方法的结果。
invoke方法中的obj就是一个实例化对象,可以直接返回对象的中每个属性的值。
加上后面的agrs结果是一样的。
例如:StudentDemo.class
package com.payeco.demo; public class StudentDemo { private int id; private String name; private String sex; private String age; private String brithday; private String address; public StudentDemo() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getBrithday() { return brithday; } public void setBrithday(String brithday) { this.brithday = brithday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }测试代码:demo.class
import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Demo { public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { StudentDemo sd=new StudentDemo(); sd.setId(1); sd.setName("测试invoke"); sd.setSex("未知"); sd.setAge("10000"); sd.setBrithday("19920205"); sd.setAddress("湖南"); Object[] agrs = new Object[]{}; StringBuilder sb = new StringBuilder(); sb.append("<Object.XmlString> start"); for (Method m : sd.getClass().getMethods()) { if (m.getName().startsWith("get")) { System.out.println(m.getName()); sb.append(" <" + m.getName().substring(3) + ">"); sb.append(m.invoke(sd,agrs)); System.out.println("---"+m.invoke(sd, args)); } } System.out.println(sb.toString()); } }
相关推荐
Java 中 Method 的 Invoke 方法详解 Java 中的 Method 对象提供了 invoke 方法,这个方法可以动态地调用 Java 方法。下面详细介绍了 invoke 方法的实现机制。 首先,在调用 invoke 方法之前,需要检查 ...
这个方法首先通过 `owner.getClass()` 得到该对象的 Class,然后通过 `getMethod(methodName, argsClass)` 得到要执行的方法,最后通过 `method.invoke(owner, args)` 执行该方法。 在 Java 反射机制中,我们可以...
Java Method类及invoke方法原理解析 Java Method类是Java反射机制中的一个重要组件,它提供...Java Method类的invoke()方法提供了一种灵活的方式来调用Java方法,但需要注意invoke()方法的使用限制和潜在的异常风险。
在使用 Method.invoke() 方法时,需要注意参数的类型和数量,因为 Method.invoke() 方法会根据参数的类型和数量来确定要调用的方法。如果参数的类型或数量不正确,可能会引发异常。 在 Java 反射机制中,除了可以...
本篇文章将深入探讨代理类中`invoke`方法的使用及其注意事项。 代理类主要用于实现AOP(面向切面编程),它可以提供一种透明的方式,让我们在不修改原有代码的情况下,对方法调用进行增强。在Java中,有两种主要的...
`Invoke`方法是MethodInfo类的一个成员,它允许我们动态地调用一个方法。以下是一段基本的代码示例: ```csharp using System; using System.Reflection; public class TestClass { public void PrintMessage...
Java中的Field类和Method类是Java反射机制的重要组成部分,它们提供了对类的字段(属性)和方法的动态访问和操作能力。在Java编程中,反射允许我们在运行时检查类的信息,包括类的结构、方法、字段,甚至可以修改类...
"InvocationHandler中invoke()方法的调用问题... InvocationHandler 中 invoke() 方法的调用问题分析可以帮助我们更好地理解 Java 中的动态代理机制,掌握 InvocationHandler 的使用方法,实现更加灵活的动态代理机制。
以下是一个简单的示例,展示如何使用代理和`Invoke`方法安全地更新UI: ```csharp // 创建一个委托类型,表示要执行的方法 public delegate void UpdateUI(string message); // 在后台线程中更新UI private void ...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
在“反射,动态加载指定类调用类中的方法”这个主题中,我们将深入探讨如何使用反射来实现动态加载和执行类的方法。首先,我们需要理解几个关键的反射API: 1. `Class<?>`: 这是所有Java类的通用表示,通过`Class....
以下示例展示了如何使用`Method`类的`invoke`方法来调用`String`类的`length`和`charAt`方法: ```java String str = "Hello, World!"; Class<?> clazz = String.class; // 调用length方法 Method lengthMethod = ...
4. **调用静态方法**:`Method`类的`getDeclaredMethod()`方法可以获取类的静态方法,然后通过`invoke(null, parameters)`来调用它们,其中第一个参数为`null`表示调用静态方法,不需要实例对象。 5. **处理数组**...
`InvocationHandler`接口的`invoke()`方法在代理对象的方法被调用时会被触发,我们可以在这里实现回调逻辑: ```java public class MyInvocationHandler implements InvocationHandler { private Object target; ...
parameterTypes)`找到对应的方法,最后通过`Method`对象的`invoke(Object obj, Object... args)`执行方法,其中`obj`是目标对象,`args`是传递给方法的实际参数。 4. **执行类的静态方法** 对于静态方法,执行...
首先,要调用无参方法,我们可以使用`Class`对象的`getMethod()`方法获取到方法的`Method`实例,然后通过`invoke()`方法执行该方法。例如: ```java Class<?> clazz = Class.forName("YourClassName"); Object ...
通过本文的学习,我们了解到Java反射机制中`Constructor`、`Method`、`Field`以及`Class`类的基本使用方法。这些工具不仅增强了程序的灵活性,还提供了强大的扩展能力。在实际开发中合理利用反射机制,可以有效提升...
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
在.NET Framework的C#中,我们可以使用`Type`类的`GetMethod()`方法和`Delegate`类型的`DynamicInvoke()`方法来实现动态调用。 这些技术虽然强大,但也需要谨慎使用,因为它们可能导致代码难以理解和维护,同时也...