import java.lang.reflect.Method;
public class Executor<T> {
/**
*
* @param clazz 执行类的class
* @param str 方法名
* @param obj 参数
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public T getObject(Class clazz,String str,Object[] obj) throws Exception{
Class[] cla=new Class[obj.length];
if(obj.length==0){
cla=null;
}else{
for(int i=0;i<obj.length;i++){
cla[i]=obj[i].getClass();
}
}
Method m=clazz.getMethod(str,cla);
return (T)m.invoke(clazz.newInstance(), obj);
}
public static void main(String[] args) {
try {
new Executor<>().getObject(A.class, "printString",new Object[]{"string",1});
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A{
public void printString(String str,Integer i){
System.out.println(str+i);
}
}
结果:
string1
分享到:
相关推荐
Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这个能力使得开发者可以突破静态类型的束缚,实现一些在编译时期无法完成...
通常,我们先根据方法名和参数类型找到可能匹配的方法,然后再通过检查返回值类型来进一步筛选。例如: ```java List<Method> methods = clazz.getMethods(); for (Method m : methods) { if (m.getName().equals...
本教程将深入探讨如何通过反射获取类、方法上的注解以及注解中的值和方法参数。 1. **注解的定义与使用** 注解以`@`符号开头,后面跟着注解的类型。例如,`@Override`表示方法重写,`@Deprecated`表示某个功能已...
通过反射,我们可以在不知道具体类名或方法名的情况下,动态地调用对象的方法或访问其属性。在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java....
2. 获取`Method`对象:使用`Class`对象的`getDeclaredMethod()`或`getMethod()`方法,传入静态方法的名称和参数类型。如果方法是静态的,不需要实例化对象。 3. 调用`Method`对象的`invoke()`方法:传入null作为第...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
Java反射是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制。反射机制为...
接下来的代码段提供了一个通用的 `invokeMethod` 方法,这个方法接受一个对象、一个方法名和一个参数数组,然后动态地调用指定对象上的方法。其工作原理如下: 1. 获取方法对象的类 `ownerClass`。 2. 创建一个 `...
在处理参数时,反射还提供了获取和设置方法参数类型的能力。`Method`对象的`getParameterTypes()`方法可以返回一个`Class<?>`类型的数组,表示方法的所有参数类型。如果需要传递的是对象,我们必须确保传递的参数...
在Java中,反射主要用于在运行时分析类、接口、字段和方法的信息,使得我们可以在不知道对象具体类型的情况下创建和操作对象。下面我们将详细探讨Java反射的基本方法及其应用。 一、获取类信息 1. `Class` 类:...
2. 获取方法:使用`Class`对象的`getMethod()`或`getDeclaredMethod()`方法,传入方法名和参数类型,获取到`Method`对象。如果方法接收数组作为参数,我们需要传递数组的类类型,例如`int[].class`。 3. 创建数组:...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...
反射是Java语言的一个重要特性,它允许在运行时检查类、接口、字段和方法的信息,并且可以动态地调用方法或修改字段值。这种能力使得Java程序具有高度的灵活性和可扩展性。 #### 通过代理创建类并执行其方法 在...
对于私有字段和方法,可以使用`setAccessible(true)`来绕过访问限制。这需要谨慎使用,因为可能破坏封装性。 ```java field.setAccessible(true); field.set(obj, newValue); ``` 总结来说,Java反射提供了一...
2. 获取方法:使用`getMethod()`或`getDeclaredMethod()`,传入方法名和参数类型,获取`Method`对象。 3. 创建对象:如果需要,使用`Constructor.newInstance()`创建类的实例。 4. 调用方法:对获取到的`Method`对象...
这段代码展示了如何使用`loadClass()`方法加载一个类,并通过`newInstance()`创建一个无参数构造函数的实例。这里需要注意的是,如果目标类没有无参数构造函数或者该构造函数不可见,则会抛出异常。 ##### 示例二:...
在Java或.NET编程环境中,反射是一种强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。反射获取属性和调用方法是其核心功能,广泛应用于框架设计、动态代理、插件机制等领域。下面将详细解释这...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。...通过上述步骤,你可以有效地利用反射获取和操作类的父类属性和方法。
2. **访问私有成员**:通过反射,我们可以访问类的私有字段和方法,这在单元测试、调试或某些特定场景下可能需要。`Method`类提供了`getDeclaredMethod()`方法来获取类的私有方法,而`invoke()`方法则可以用来调用这...
通过Class对象,我们可以动态地获取和操作类的信息,这就是反射的核心。 1. 获取类的Class对象: - `Class<?> clazz = Class.forName("全限定类名");` - 或者,通过对象实例获取:`Class<?> clazz = obj.getClass...