Java Reference
In-Depth Information
Class<?>[] interfaces,
InvocationHandler ih)
throws IllegalArgumentException
{...}
//weitere Methoden:
...
}
Die ersten beiden Parameter von newProxyInstance sind wie bei getProxyClass, der dritte
Parameter ist das Argument für den Konstruktor der erzeugten dynamischen Proxy-Klasse.
Bitte beachten Sie, dass bei dieser Methode für das zweite Argument das Varargs-Sprach-
konstrukt nicht verwendet werden kann, da dies nur für den letzten Parameter möglich ist.
In Listing 4.3 wird ein dynamischer Proxy auf beide beschriebenen Arten erzeugt, einmal
mit getProxyClass und einmal mit newProxyInstance.
Listing 4.3 Beispiel für mit Refl ection dynamisch erzeugte Proxies
package javacomp.basics;
import java.lang.reflect.*;
class MyInvocationHandler implements InvocationHandler
{
private Object target;
public MyInvocationHandler(Object target)
{
this.target = target;
}
public Object invoke(Object proxy, Method method,
Object[] args)
{
String argsString = "";
if(args != null)
{
for(int i = 0; i < args.length; i++)
{
if(i > 0)
{
argsString += ", ";
}
argsString += args[i];
}
}
System.out.println("---> " +
method.getDeclaringClass().getName() +
"." + method.getName() +
"(" + argsString + ")");
try
{
Object result = method.invoke(target, args);
if(method.getReturnType() != void.class)
{
System.out.println("<--- return: " + result);
}
 
Search WWH ::




Custom Search