package com.openv.spring.reflectTest;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test {
/**
* 构造函数
*/
public Test() {
}
/**
* 构造函数2
*
* @param a
* @param b
*/
public Test(int a, int b) {
System.out.println("a = " + a + " b = " + b);
}
/**
* @param args
*/
public static void main(String[] args) {
Son1 son1 = (Son1) Test.convertStr2ServiceBean(
"com.openv.spring.reflectTest.Son1", "setName", "wang da sha");
System.out.println("son1.getName() :" + son1.getName());
testClass();
test2();
test3();
test4();
}
/**
* 多态性测试
* 对象.方法 是根据多态性调用,对象.实例变量 是根据对象的类型执行调用
* 多态性仅仅适用于方法的调用,而不适合于实例变量
*/
public static void test4() {
Base base = new Son1();
System.out.println("base.getX()==" + base.getX());
System.out.println("base.x==" + base.x);
System.out.println("base.s==" + base.s);
}
/**
*
* @param beanName
* @param fieldSetter
* @param paraValue
* @return
*/
public static Base convertStr2ServiceBean(String beanName,
String fieldSetter, String paraValue) {
Base base = null;
try {
Class cls = Class.forName(beanName);
base = (Base) cls.newInstance();
Class[] paraTypes = new Class[] { String.class };
Method method = cls.getMethod(fieldSetter, paraTypes);
String[] paraValues = new String[] { paraValue };
method.invoke(base, paraValues);
} catch (Throwable e) {
e.printStackTrace();
}
return base;
}
public static void testClass() {
try {
Class cls = Class.forName("java.lang.String");
Method[] method = cls.getDeclaredMethods();
for (int i = 0; i < method.length; i++) {
System.out.println(method[i].toString());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 根据方法名执行方法
*
*/
public static void test2() {
try {
Class cls = Class.forName("com.openv.spring.reflectTest.Son2");
// 参数类型
Class paraTypes[] = new Class[2];
paraTypes[0] = Integer.TYPE;
paraTypes[1] = Integer.TYPE;
String methodName = "add";
Method meth = cls.getMethod(methodName, paraTypes);
Object instance = cls.newInstance();
// method2 methobj = new method2();
// 参数列表
Object argList[] = new Object[2];
argList[0] = new Integer(37);
argList[1] = new Integer(47);
// 返回值retobj
Object retobj = meth.invoke(instance, argList);
Integer retval = (Integer) retobj;
System.out.println(retval.intValue());
// 改变属性的值
Field fld = cls.getField("salary");
fld.setDouble(instance, 6000);
System.out.println("new salary == "
+ cls.getMethod("getSalary").invoke(instance));
System.out
.println("new salary == " + ((Son2) instance).getSalary());
} catch (Throwable e) {
System.err.println(e);
}
}
/**
* 根据指定的参数类型找到相应的构造函数并执行它, 程序运行时动态地创建对象
*/
public static void test3() {
try {
Class cls = Class.forName("com.openv.spring.reflectTest.Test");
Class[] paraTypes = new Class[2];
paraTypes[0] = Integer.TYPE;
paraTypes[1] = Integer.TYPE;
Constructor ct = cls.getConstructor(paraTypes);
// 参数列表
Object[] argList = new Object[2];
argList[0] = new Integer(37);
argList[1] = new Integer(47);
Object o = ct.newInstance(argList);
} catch (Throwable e) {
System.err.println(e);
}
}
}
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
java反射java反射java反射java反射java反射
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射demo
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
java反射理论及实现
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!