黑马程序员技术交流社区
标题:
【黑马云青年 反射在实际开发中用的多吗?】
[打印本页]
作者:
simonqian
时间:
2013-5-17 09:55
标题:
【黑马云青年 反射在实际开发中用的多吗?】
比如下面一段代码
public class GenericTest{
public static void main(String[] args)
{
Method applyMethod = GenericTest.class.getMethod("applyVector",Vector.class);
Type[] types = applyMethod.getGenericParameterTypes();
}
public static void applyVector(Vector<Date> v1){}
}
上面的代码是通过反射获取方法的参数的类型,这个在实际开发中多吗?多的话,举例说明?
作者:
尹丽峰
时间:
2013-5-17 10:06
本帖最后由 尹丽峰 于 2013-5-17 10:08 编辑
【黑马云青年为您解答】
Java反射机制主要提供以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法。
只要涉及到框架开发反射用的频率很高
下面经典案例
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Admin {
public Admin(){
}
private String id = "";
public String getId() {
System.out.print(id);
return id;
}
public void setId(String id) {
this.id = id;
}
public static void main(String[] args)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
String str="com.spring.event.Admin";
Class c=Class.forName(str);
Object obj=c.newInstance();
// 这里是里设置属性的值
Method m = c.getMethod("setId",new Class[]{Class.forName("java.lang.String")});
m.invoke(obj,new Object[]{"penghao122"});
// 这里是里获取属性的值
m = c.getMethod("getId",new Class[]{});
m.invoke(obj,new Object []{});
}
}
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Admin {
public Admin(){
}
private String id = "";
public String getId() {
System.out.print(id);
return id;
}
public void setId(String id) {
this.id = id;
}
public static void main(String[] args)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
String str="com.spring.event.Admin";
Class c=Class.forName(str);
Object obj=c.newInstance();
// 这里是里设置属性的值
Method m = c.getMethod("setId",new Class[]{Class.forName("java.lang.String")});
m.invoke(obj,new Object[]{"penghao122"});
// 这里是里获取属性的值
m = c.getMethod("getId",new Class[]{});
m.invoke(obj,new Object []{});
}
}
作者:
曹睿翔
时间:
2013-5-19 08:04
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2