反射机制的问题? 哪位知道反射的机制是怎么的,具体点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用java反射机制获得修饰符import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;public class Test { public static void main(String[] args) { Class inspect; try { if (args.length > 0) inspect = Class.forName(args[0]); else inspect = Class.forName("Test"); Field[] fs = inspect.getDeclaredFields(); Method[] methods = inspect.getDeclaredMethods(); for (int i = 0; i < methods.length; i++) { Method methVal = methods[i]; Class returnVal = methVal.getReturnType(); int mods = methVal.getModifiers(); String modVal = Modifier.toString(mods); Class[] paramVal = methVal.getParameterTypes(); StringBuffer params = new StringBuffer(); for (int j = 0; j < paramVal.length; j++) { if (j > 0) params.append(", "); params.append(paramVal[j].getName()); } System.out.println("Method: " + methVal.getName()); System.out.println("Modifers: " + modVal); System.out.println("Return Type: " + returnVal.getName()); System.out.println("Parameters: " + params); System.out.println(); } } catch (ClassNotFoundException e) { System.out.println(e.toString()); } }} 反射类似于c中的指针,有时可以编写出十分简介的代码,主要是可以写出通用的代码(个人使用过程中感觉),因为reflect最主要是通过invoke方法调用类中的一个方法,那么当你不明确需要调用类中的哪个方法的时候(也就是调用的方法需要通过参数传递)时可以通过调用它来达到目的,这样只要固定一个类,调用方法只需要外界传入方法名就可以了。具体例子一般书上都有,下面简单列一个,希望对你有帮助:Class[] para1 = new Class[2];para1[0] = Class.forName("aaaaaaa");para1[1] = Class.forName("bbbbbbb");Class myclass1 = Class.forName("cccccccc");Method mymethod1 = myclass1.getMethod("aaaaaa",para1);Object args1[] = {obj1, obj2};cccccccc c = (cccccccc)mymethod1.invoke(myclass1.newInstance(),args1); 就是根据类的Class的对象可以得到类的所有的信息包括构造函数,方法,属性,所有的父类,接口想知道的都可以得到 你的问题提的太简单了。反射的作用主要是让你的程序运行是动态的获得某个对象的属性,或着创建一个对象。反射的一个好处就是可以使用表达式(一个包含调用信息的字符串)对某个类或对象进行操作。比方我有了一个类的完整类名,这个类又在当前loader可以读取的位置,就可以直接使用这个类名构造一个对象。或者有了一个对象,知道这个对象有某个方法,可以通过方法名调用这个方法。反射主要是为了javaBean和服务框架服务的。因为框架一般需要动态配置某些引擎的类,和动态调用某些对象的方法。但在编写代码时程序又不能获得这些类的具体信息。反射调用的速度相当忙!!!!!!! 主要是通过java.lang.reflect包里面的类来完成的,包括得到类的属性,方法,方法的参数以及同通过方法的名称来调用方法(invoke) java是解释性的语言,所以它具有传统语言不具有的动态性。java的反射机制就是建立在这个之上的。具体要知道如何解析字符串,如何调用方法,那你只有去看源码了。 反射是JAVA支持的元数据的特性 招聘java工程师java jsp servlet spring hibernate js css上面会一部分既可qq 283765999 地点:北京 关于java date与win32 filetime格式之间的转换 请教个JinternalFrame的问题 30分求教,JAVA小程序 如何对图片进行翻页 一个关于tableColumn(SWT)的问题 刚学JAVA 谁能帮我看下程序 急求java客户端的一个简单问题 高手帮写下注释,越详细越好啊!!! 请教一个问题:如何配置J2SDK141环境CLASSPATH 和PATH。急!! 界面设计布局的问题.add(xxx, BorderLayout.SOUTH)还是跑到下面了 请教高手帮忙修改下程序 一个关于继承的问题
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test { public static void main(String[] args) {
Class inspect;
try {
if (args.length > 0)
inspect = Class.forName(args[0]);
else
inspect = Class.forName("Test");
Field[] fs = inspect.getDeclaredFields();
Method[] methods = inspect.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method methVal = methods[i];
Class returnVal = methVal.getReturnType();
int mods = methVal.getModifiers();
String modVal = Modifier.toString(mods);
Class[] paramVal = methVal.getParameterTypes();
StringBuffer params = new StringBuffer();
for (int j = 0; j < paramVal.length; j++) {
if (j > 0)
params.append(", ");
params.append(paramVal[j].getName());
}
System.out.println("Method: " + methVal.getName());
System.out.println("Modifers: " + modVal);
System.out.println("Return Type: " + returnVal.getName());
System.out.println("Parameters: " + params);
System.out.println();
}
} catch (ClassNotFoundException e) {
System.out.println(e.toString());
}
}
}
Class[] para1 = new Class[2];
para1[0] = Class.forName("aaaaaaa");
para1[1] = Class.forName("bbbbbbb");Class myclass1 = Class.forName("cccccccc");
Method mymethod1 = myclass1.getMethod("aaaaaa",para1);
Object args1[] = {obj1, obj2};
cccccccc c = (cccccccc)mymethod1.invoke(myclass1.newInstance(),args1);
反射的作用主要是让你的程序运行是动态的获得某个对象的属性,或着创建一个对象。
反射的一个好处就是可以使用表达式(一个包含调用信息的字符串)对某个类或对象进行操作。
比方我有了一个类的完整类名,这个类又在当前loader可以读取的位置,就可以直接使用这个类名构造一个对象。
或者有了一个对象,知道这个对象有某个方法,可以通过方法名调用这个方法。反射主要是为了javaBean和服务框架服务的。因为框架一般需要动态配置某些引擎的类,和动态调用某些对象的方法。但在编写代码时程序又不能获得这些类的具体信息。
反射调用的速度相当忙!!!!!!!
包括得到类的属性,方法,方法的参数
以及同通过方法的名称来调用方法(invoke)
java的反射机制就是建立在这个之上的。
具体要知道如何解析字符串,如何调用方法,那你只有去看源码了。
java工程师
java jsp servlet spring hibernate js css
上面会一部分既可qq 283765999
地点:北京