~~请教~给我一个反射的例子~~ ~~给我一个反射的例子~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【Object_yao1】截止到2008-07-20 23:57:07的历史汇总数据(不包括此帖):发帖的总数量:1 发帖的总分数:100 每贴平均分数:100 回帖的总数量:1 得分贴总数量:0 回帖的得分率:0% 结贴的总数量:1 结贴的总分数:100 无满意结贴数:0 无满意结贴分:0 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:0.00 % 无满意结分率:0.00 % 敬礼! Class c = Class.forName("java.lang.String");Class param[] =new Class[0];Constructor ctor = c.getConstructor(param); String string=(String)ctor.newInstance(param); System.out.println("string = " + string); import java.lang.reflect.Array;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class Reflection{ /** * 得到某个对象的公共属性 * * @param owner, * fieldName * @return 该属性对象 * @throws Exception * */ public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } /** * 得到某类的静态公共属性 * * @param className * 类名 * @param fieldName * 属性名 * @return 该属性对象 * @throws Exception */ public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } /** * 执行某对象方法 * * @param owner * 对象 * @param methodName * 方法名 * @param args * 参数 * @return 方法返回值 * @throws Exception */ public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args); } /** * 执行某类的静态方法 * * @param className * 类名 * @param methodName * 方法名 * @param args * 参数数组 * @return 执行方法返回的结果 * @throws Exception */ public Object invokeStaticMethod(String className, String methodName, Object[] args) throws Exception { Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(null, args); } /** * 新建实例 * * @param className * 类名 * @param args * 构造函数的参数 * @return 新建的实例 * @throws Exception */ public Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); } /** * 是不是某个类的实例 * * @param obj * 实例 * @param cls * 类 * @return 如果 obj 是此类的实例,则返回 true */ public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); } /** * 得到数组中的某个元素 * * @param array * 数组 * @param index * 索引 * @return 返回指定数组对象中索引组件的值 */ public Object getByArray(Object array, int index) { return Array.get(array, index); }} /** * */import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.util.Scanner;/** * @author zhangliguo * */@SuppressWarnings("unchecked")public class TestReflection01 { public static void main(String[] args) { System.out.println("请输入类型名称:"); Scanner scan = new Scanner(System.in); String className = scan.next(); System.out.println("当前类型:" + className); try { //获取Class对象 Class c = Class.forName(className); //解析属性信息 Field[] fs = c.getDeclaredFields(); for (Field f : fs) { System.out.println("----------------------------------------------"); System.out.println("属性:" + f.toString()); System.out.println("\t数据类型:" + f.getType()); System.out.println("\t属性名:" + f.getName()); int mod = f.getModifiers(); System.out.println("\t属性修饰符:" + Modifier.toString(mod)); } //解析方法信息 Method[] ms = c.getDeclaredMethods(); for(Method m : ms){ System.out.println("----------------------------------------------"); System.out.println("方法:" + m.toString()); System.out.println("\t方法名:" + m.getName()); int mod = m.getModifiers(); System.out.println("\t方法修饰符:" + Modifier.toString(mod)); System.out.print("\t方法参数列表:"); Class pts[] = m.getParameterTypes(); for (int i = 0; i < pts.length; i++) { Class class1 = pts[i]; if(i != 0 ) System.out.print(", "); System.out.print(class1); } System.out.println(); System.out.println("\t返回值类型:" + m.getReturnType()); } //解析构造方法信息 Constructor[] cs = c.getDeclaredConstructors(); for (Constructor con : cs) { System.out.println("----------------------------------------------"); System.out.println("构造方法:" + con.toString()); System.out.println("\t方法名:" + con.getName()); int mod = con.getModifiers(); System.out.println("\t方法修饰符:" + Modifier.toString(mod)); System.out.print("\t方法参数列表:"); Class pts[] = con.getParameterTypes(); for (int i = 0; i < pts.length; i++) { Class class1 = pts[i]; if(i != 0 ) System.out.print(", "); System.out.print(class1); } System.out.println(); } System.out.println("----------------------------------------------"); //解析当前类类型的父类 Class superClass = c.getSuperclass(); System.out.println("当前类的父类:" + superClass.toString()); System.out.println("----------------------------------------------"); //解析当前类实现的接口 Class[] interfaces = c.getInterfaces(); System.out.print("当前类所实现接口:"); for (Class class1 : interfaces) { System.out.print(class1.toString() + "\t"); } System.out.println("\n----------------------------------------------"); //解析当前类型所在包信息 Package p = c.getPackage(); System.out.println("当前类所在包" + p.toString()); } catch (ClassNotFoundException e) { e.printStackTrace(); } }} 如何阻止div元素消失 为什么要用xmlencoder和xmldecoder Exception in thread "main" java.lang.NullPointerException 这个程序为什么打印不出来 我看过了和原来的程序没有区别呀. 请大家帮帮我!!!谢谢了 GridBagLayout布局管理器该怎么用? 使用synth遇到的问题 如何在java上再进一步 两个swing控件之间画一条带菱形的箭头,可以拖动 怎么编写行数统计器的程序!!!!!急~!高手请进!!高分~~~! 一个有关classPath的问题 这么连db2数据库啊 基础问题求教
楼主【Object_yao1】截止到2008-07-20 23:57:07的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:100 每贴平均分数:100
回帖的总数量:1 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:100
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
Class param[] =new Class[0];
Constructor ctor = c.getConstructor(param);
String string=(String)ctor.newInstance(param);
System.out.println("string = " + string);
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class Reflection
{
/**
* 得到某个对象的公共属性
*
* @param owner,
* fieldName
* @return 该属性对象
* @throws Exception
*
*/
public Object getProperty(Object owner, String fieldName) throws Exception
{
Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property;
} /**
* 得到某类的静态公共属性
*
* @param className
* 类名
* @param fieldName
* 属性名
* @return 该属性对象
* @throws Exception
*/
public Object getStaticProperty(String className, String fieldName) throws Exception
{
Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property;
} /**
* 执行某对象方法
*
* @param owner
* 对象
* @param methodName
* 方法名
* @param args
* 参数
* @return 方法返回值
* @throws Exception
*/
public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception
{ Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++)
{
argsClass[i] = args[i].getClass();
} Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args);
} /**
* 执行某类的静态方法
*
* @param className
* 类名
* @param methodName
* 方法名
* @param args
* 参数数组
* @return 执行方法返回的结果
* @throws Exception
*/
public Object invokeStaticMethod(String className, String methodName, Object[] args)
throws Exception
{
Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++)
{
argsClass[i] = args[i].getClass();
} Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(null, args);
} /**
* 新建实例
*
* @param className
* 类名
* @param args
* 构造函数的参数
* @return 新建的实例
* @throws Exception
*/
public Object newInstance(String className, Object[] args) throws Exception
{
Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++)
{
argsClass[i] = args[i].getClass();
} Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); } /**
* 是不是某个类的实例
*
* @param obj
* 实例
* @param cls
* 类
* @return 如果 obj 是此类的实例,则返回 true
*/
public boolean isInstance(Object obj, Class cls)
{
return cls.isInstance(obj);
} /**
* 得到数组中的某个元素
*
* @param array
* 数组
* @param index
* 索引
* @return 返回指定数组对象中索引组件的值
*/
public Object getByArray(Object array, int index)
{
return Array.get(array, index);
}
}
*
*/
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;
/**
* @author zhangliguo
*
*/
@SuppressWarnings("unchecked")
public class TestReflection01 {
public static void main(String[] args) {
System.out.println("请输入类型名称:");
Scanner scan = new Scanner(System.in);
String className = scan.next();
System.out.println("当前类型:" + className); try {
//获取Class对象
Class c = Class.forName(className);
//解析属性信息
Field[] fs = c.getDeclaredFields();
for (Field f : fs) {
System.out.println("----------------------------------------------");
System.out.println("属性:" + f.toString());
System.out.println("\t数据类型:" + f.getType());
System.out.println("\t属性名:" + f.getName());
int mod = f.getModifiers();
System.out.println("\t属性修饰符:" + Modifier.toString(mod));
}
//解析方法信息
Method[] ms = c.getDeclaredMethods();
for(Method m : ms){
System.out.println("----------------------------------------------");
System.out.println("方法:" + m.toString());
System.out.println("\t方法名:" + m.getName());
int mod = m.getModifiers();
System.out.println("\t方法修饰符:" + Modifier.toString(mod));
System.out.print("\t方法参数列表:");
Class pts[] = m.getParameterTypes();
for (int i = 0; i < pts.length; i++) {
Class class1 = pts[i];
if(i != 0 )
System.out.print(", ");
System.out.print(class1);
}
System.out.println();
System.out.println("\t返回值类型:" + m.getReturnType());
}
//解析构造方法信息
Constructor[] cs = c.getDeclaredConstructors();
for (Constructor con : cs) {
System.out.println("----------------------------------------------");
System.out.println("构造方法:" + con.toString());
System.out.println("\t方法名:" + con.getName());
int mod = con.getModifiers();
System.out.println("\t方法修饰符:" + Modifier.toString(mod));
System.out.print("\t方法参数列表:");
Class pts[] = con.getParameterTypes();
for (int i = 0; i < pts.length; i++) {
Class class1 = pts[i];
if(i != 0 )
System.out.print(", ");
System.out.print(class1);
}
System.out.println();
}
System.out.println("----------------------------------------------");
//解析当前类类型的父类
Class superClass = c.getSuperclass();
System.out.println("当前类的父类:" + superClass.toString());
System.out.println("----------------------------------------------");
//解析当前类实现的接口
Class[] interfaces = c.getInterfaces();
System.out.print("当前类所实现接口:");
for (Class class1 : interfaces) {
System.out.print(class1.toString() + "\t");
}
System.out.println("\n----------------------------------------------");
//解析当前类型所在包信息
Package p = c.getPackage();
System.out.println("当前类所在包" + p.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}}