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()