黑马程序员技术交流社区
标题:
通过反射创建一个动态类查看其方法列表信息
[打印本页]
作者:
草上飞
时间:
2012-11-15 16:32
标题:
通过反射创建一个动态类查看其方法列表信息
本帖最后由 安显杰 于 2012-11-15 16:34 编辑
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collection;
public class ProxyTest {
public static void main(String[] args) throws SecurityException, NoSuchMethodException {
//返回代理类的 java.lang.Class 对象,并向其提供类加载器和接口数组。
Class<?> clazz=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
Constructor[] constructors=clazz.getConstructors();//获取clazz的构造函数数组
for(Constructor constructor:constructors)
{
String name=constructor.getName();//获取构造方法名
StringBuilder sbBuilder=new StringBuilder(name);
// sbBuilder.append("(");
// 按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。
Class[] clazzParames=constructor.getParameterTypes();
for(Class clazzParame : clazzParames)
{
sbBuilder.append(clazzParame.getName()).append(",");
}
if(clazzParames!=null|| clazzParames.length!=0)
sbBuilder.deleteCharAt(sbBuilder.length()-1);//删除clazzparames最后一个字符
// sbBuilder.append(")");
System.out.println(sbBuilder);
}
System.out.println("=========method=====");
Method[] methods=clazz.getMethods();//获取clazz的构造函数数组
for(Method method:methods)
{
String name=method.getName();//获取构造方法名
StringBuilder sbBuilder=new StringBuilder(name);
sbBuilder.append("(");
// 按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。
Class[] clazzParames=method.getParameterTypes();
for(Class clazzParame : clazzParames)
{
sbBuilder.append(clazzParame.getName()).append(",");
}
if(clazzParames!=null|| clazzParames.length!=0)
sbBuilder.deleteCharAt(sbBuilder.length()-1);//删除clazzparames最后一个字符
sbBuilder.append(")");
System.out.println(sbBuilder);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2