创建动态类及查看代理方法列表信息
2011-12-18 01:05
218 查看
代理(Proxy),这个词并不陌生,在我们生活的无处不在,理解他来说不是一个很难的问题。
例如:我们要去买一本Java书,或者买一些生活用品,都需要经过代理商。也可见代理在程序中的实际应用。
以前刚学的时候,确实有点不是很明白,林林散散,似懂非懂。今天又重新把它过滤了一遍。
先结合反射的例子,进入一个代理的入门,通过反射查看代理方表的列表信息,代码如下:
public class TestProxy {
public static void main(String[] args) throws Exception {
//通常用这个接口相同的类加载器,可以随便指定
Class clazzProxy1=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
System.out.println(clazzProxy1.getName());
System.out.println("---------构造方法------------");
//看看他身上有没有构造方法
Constructor[] constructors=clazzProxy1.getConstructors();
for(Constructor con:constructors){
String name=con.getName();
//往字符串动态的添加字符,不考虑安全StringBuilder比StringBuffer效率高
StringBuilder sBuilder = new StringBuilder(name);
sBuilder.append('(');
Class[] clazzParams=con.getParameterTypes();
for(Class clazzParam:clazzParams){
sBuilder.append(clazzParam.getName()).append(",");
}
//删除最后一个","符号。
sBuilder.deleteCharAt((sBuilder.length())-1);
sBuilder.append(')');
System.out.println(sBuilder);
}
System.out.println("--------方 法--------");
//看看他身上有没有构造方法
Method[] methods=clazzProxy1.getMethods();
for(Method method:methods){
String name=method.getName();
StringBuilder sBuilder=new StringBuilder(name);
sBuilder.append('(');
Class[] clazzParams=method.getParameterTypes();
for(Class clazzParam:clazzParams){
sBuilder.append(clazzParam.getName());
}
if(clazzParams!= null&&clazzParams.length!=0)
sBuilder.deleteCharAt(sBuilder.length()-1);
sBuilder.append(')');
System.out.println(sBuilder.toString());
}
}
}
//通过反射得到代理的构造方法"$Proxy0(java.lang.reflect.InvocationHandler",和其它的一些方法列表,此处不一一列表。以后对他再更深入的学习。
例如:我们要去买一本Java书,或者买一些生活用品,都需要经过代理商。也可见代理在程序中的实际应用。
以前刚学的时候,确实有点不是很明白,林林散散,似懂非懂。今天又重新把它过滤了一遍。
先结合反射的例子,进入一个代理的入门,通过反射查看代理方表的列表信息,代码如下:
public class TestProxy {
public static void main(String[] args) throws Exception {
//通常用这个接口相同的类加载器,可以随便指定
Class clazzProxy1=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
System.out.println(clazzProxy1.getName());
System.out.println("---------构造方法------------");
//看看他身上有没有构造方法
Constructor[] constructors=clazzProxy1.getConstructors();
for(Constructor con:constructors){
String name=con.getName();
//往字符串动态的添加字符,不考虑安全StringBuilder比StringBuffer效率高
StringBuilder sBuilder = new StringBuilder(name);
sBuilder.append('(');
Class[] clazzParams=con.getParameterTypes();
for(Class clazzParam:clazzParams){
sBuilder.append(clazzParam.getName()).append(",");
}
//删除最后一个","符号。
sBuilder.deleteCharAt((sBuilder.length())-1);
sBuilder.append(')');
System.out.println(sBuilder);
}
System.out.println("--------方 法--------");
//看看他身上有没有构造方法
Method[] methods=clazzProxy1.getMethods();
for(Method method:methods){
String name=method.getName();
StringBuilder sBuilder=new StringBuilder(name);
sBuilder.append('(');
Class[] clazzParams=method.getParameterTypes();
for(Class clazzParam:clazzParams){
sBuilder.append(clazzParam.getName());
}
if(clazzParams!= null&&clazzParams.length!=0)
sBuilder.deleteCharAt(sBuilder.length()-1);
sBuilder.append(')');
System.out.println(sBuilder.toString());
}
}
}
//通过反射得到代理的构造方法"$Proxy0(java.lang.reflect.InvocationHandler",和其它的一些方法列表,此处不一一列表。以后对他再更深入的学习。
相关文章推荐
- Java代理学习-创建动态类及查看其方法列表信息
- 【Java进阶-Java动态代理与AOP】02 创建动态类及查看其方法列表信息
- Java 创建动态类和查看方法列表信息的实例
- 通过JDK proxy创建动态类,并查看其方法列表信息
- 50_创建动态类及查看其方法列表信息
- 创建动态类及查看其方法列表信息
- 11.1 创建动态类及其查看其方法列表信息
- 创建动态类Proxy,及查看其方法列表信息
- Java 创建动态类和查看方法列表信息
- Java 代理类(一) 创建动态类及查看其方法列表信息
- Java代理学习-创建动态类的实例对象及调用其方法
- 【Java进阶-Java动态代理与AOP】03 创建动态类的实例对象及调用其方法
- 创建代理类及查看构造方法列表
- 创建代理类及查看普通方法方法列表
- Android Studio查看函数(方法)的形参列表,返回值,以及提示信息
- SQL Server 2005 中,创建新维护计划时出现错误信息:失败" 创建维护计划"14234 解决方法
- Extjs列表详细信息窗口新建后自动加载解决方法
- windows系统查看详细系统信息方法
- PowerShell获取Windows用户列表、用户信息的方法
- 查看Windows7系统信息的方法