您的位置:首页 > 编程语言 > Java开发

Java代理学习-创建动态类及查看其方法列表信息

2016-05-25 22:37 423 查看
package com.mari.proxy;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;

public class ProxyTest {

public static void main(String[] args) {

Class<?> clazzProxy1 = Proxy.getProxyClass(List.class.getClassLoader(), List.class);
System.out.println(clazzProxy1.getName());

System.out.println("------begin constructor list-------");
Constructor<?>[] constructors = clazzProxy1.getConstructors();
for (Constructor<?> constructor : constructors) {
String name = constructor.getName();
StringBuilder sb = new StringBuilder(name);
sb.append('(');
Class<?>[] clazzParams = constructor.getParameterTypes();
for (Class<?> clazzParam : clazzParams) {
sb.append(clazzParam.getClass().getName()).append(",");
}
if (clazzParams != null && clazzParams.length > 0)
sb.deleteCharAt(sb.length() - 1);
sb.append(')');
System.out.println(sb.toString());
}

System.out.println("------begin method list-------");
Method[] clazzMethods = clazzProxy1.getMethods();
for (Method method : clazzMethods) {
String name = method.getName();
StringBuilder sb = new StringBuilder(name);
Class<?>[] clazzParams = method.getParameterTypes();
sb.append('(');
for (Class<?> clazzParam : clazzParams) {
sb.append(clazzParam.getClass().getName()).append(",");
}
if(clazzParams != null && clazzParams.length > 0)
sb.deleteCharAt(sb.length() -1);
sb.append(')');
System.out.println(sb.toString());
}

}

}


打印的信息

com.sun.proxy.$Proxy0
------begin constructor list-------
com.sun.proxy.$Proxy0(java.lang.Class)
------begin method list-------
add(java.lang.Class,java.lang.Class)
add(java.lang.Class)
remove(java.lang.Class)
remove(java.lang.Class)
get(java.lang.Class)
equals(java.lang.Class)
toString()
hashCode()
indexOf(java.lang.Class)
clear()
contains(java.lang.Class)
isEmpty()
iterator()
lastIndexOf(java.lang.Class)
replaceAll(java.lang.Class)
size()
subList(java.lang.Class,java.lang.Class)
toArray()
toArray(java.lang.Class)
spliterator()
addAll(java.lang.Class,java.lang.Class)
addAll(java.lang.Class)
stream()
forEach(java.lang.Class)
set(java.lang.Class,java.lang.Class)
containsAll(java.lang.Class)
listIterator()
listIterator(java.lang.Class)
removeAll(java.lang.Class)
removeIf(java.lang.Class)
retainAll(java.lang.Class)
sort(java.lang.Class)
parallelStream()
isProxyClass(java.lang.Class)
getProxyClass(java.lang.Class,java.lang.Class)
getInvocationHandler(java.lang.Class)
newProxyInstance(java.lang.Class,java.lang.Class,java.lang.Class)
wait()
wait(java.lang.Class,java.lang.Class)
wait(java.lang.Class)
getClass()
notify()
notifyAll()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: