package example3;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class LoadMethod {
public Object Load(String cName, String MethodName, String[] type,
String[] param) {
Object retobj = null;
try {
// 加载指定的Java类
Class cls = Class.forName(cName);
// 获取指定对象的实例
Constructor ct = cls.getConstructor(null);
Object obj = ct.newInstance(null);
// 构建方法参数的数据类型
Class partypes[] = this.getMethodClass(type);
// 在指定类中获取指定的方法
Method meth = cls.getMethod(MethodName, partypes);
// 构建方法的参数值
Object arglist[] = this.getMethodObject(type, param);
// 调用指定的方法并获取返回值为Object类型
retobj = meth.invoke(obj, arglist);
} catch (Throwable e) {
System.err.println(e);
}
return retobj;
}
// 获取参数类型Class[]的方法
public Class[] getMethodClass(String[] type) {
Class[] cs = new Class[type.length];
for (int i = 0; i < cs.length; i++) {
if (!type[i].trim().equals("") || type[i] != null) {
if (type[i].equals("int") || type[i].equals("Integer")) {
cs[i] = Integer.TYPE;
} else if (type[i].equals("float") || type[i].equals("Float")) {
cs[i] = Float.TYPE;
} else if (type[i].equals("double") || type[i].equals("Double")) {
cs[i] = Double.TYPE;
} else if (type[i].equals("boolean")
|| type[i].equals("Boolean")) {
cs[i] = Boolean.TYPE;
} else {
cs[i] = String.class;
}
}
}
return cs;
}
// 获取参数Object[]的方法
public Object[] getMethodObject(String[] type, String[] param) {
Object[] obj = new Object[param.length];
for (int i = 0; i < obj.length; i++) {
if (!param[i].trim().equals("") || param[i] != null) {
if (type[i].equals("int") || type[i].equals("Integer")) {
obj[i] = new Integer(param[i]);
} else if (type[i].equals("float") || type[i].equals("Float")) {
obj[i] = new Float(param[i]);
} else if (type[i].equals("double") || type[i].equals("Double")) {
obj[i] = new Double(param[i]);
} else if (type[i].equals("boolean")
|| type[i].equals("Boolean")) {
obj[i] = new Boolean(param[i]);
} else {
obj[i] = param[i];
}
}
}
return obj;
}
}
User类
package example3;
public class User {
private int id;
private String userName;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public String returnUserName(String userName) {
return userName;
}
}
测试类
package example3;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LoadMethod loadMethod = new LoadMethod();
Object result = loadMethod.Load("example3.User", "returnUserName", new String[]{"String"}, new String[]{"df"});
System.out.print(result);
}
}
更多参考开心购的交流专区
分享到:
相关推荐
在“Java反射机制2”这个主题中,我们将深入探讨数组与Object的关系、成员方法的反射、成员变量的反射以及数组的反射应用。 1. 数组与Object的关系及其反射类型: 在Java中,所有数组都继承自Object类,这意味着...
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
#### 二、Java反射机制简介 Java反射机制允许程序在运行时获取类的信息,这使得Java具有了一定程度上的动态性。具体来说,Java反射机制提供了以下功能: 1. **获取类的信息**:可以在运行时获取类的修饰符、父类、...
#### 二、Java反射机制的由来与发展 Java反射机制的概念起源于早期面向对象语言的设计思想。随着面向对象编程的发展,动态类型和动态绑定的概念逐渐成熟,这为Java反射机制的出现奠定了基础。Java反射机制在JDK 1.1...
JAVA反射机制应用 JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态...
这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象等核心概念。在这里,我们将详细讨论Java反射的基本用法及其在实际开发中的应用。 1. **什么是反射**: ...
java反射机制源码java反射机制源码java反射机制源码
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过Java反射机制,开发者可以在不知道具体类名的情况下创建对象,调用方法,访问和修改私有成员变量,以及...
java反射机制和动态代理的原理,熟悉反射机制和动态代理
Java 反射机制是 Java 语言中的一个重要特性,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并调用对象的方法,甚至修改对象的状态。这一机制极大地增强了 Java 程序的灵活性和可扩展性,尤其是在...
### Java反射机制总结 #### 反射的概念与起源 反射的概念最早由Smith于1982年提出,指的是程序能够访问、检测并修改其自身状态或行为的能力。这一概念的提出迅速引起了计算机科学领域的广泛关注,并在之后的研究中...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时获取和操作任何已知名称的类的内部信息。这一机制使得Java具备了一定的动态性,虽然在传统的分类中Java被视为静态类型语言。通过反射,开发者可以在...
#### 二、Java反射机制的核心类 Java反射机制主要依赖于以下几个核心类: 1. **`Class`**:代表一个类或接口。 2. **`Constructor`**:代表一个构造器。 3. **`Method`**:代表一个方法。 4. **`Field`**:代表一...
### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...
#### 二、Java反射机制概述 在Java中,反射机制是一种非常重要的特性,它使得程序能够在运行时动态地获取类的内部信息,如类名、构造器、成员变量和方法等,并且能够直接操作这些内部结构。通过这种方式,Java反射...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念...