A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

比如下面一段代码

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:07

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
袁梦希 + 1 + 3

查看全部评分

2 个回复

倒序浏览
本帖最后由 尹丽峰 于 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 []{});

}

}

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
袁梦希 + 1 + 2 很给力!

查看全部评分

回复 使用道具 举报
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马