Javareflect-proxy-getproxyclass
提供:Dev Guides
java.lang.reflect.Proxy.getProxyClass()メソッドの例
説明
- java.lang.reflect.Proxy.getProxyClass(ClassLoader loader、Class <?> … interfaces)*メソッドは、クラスローダーとインターフェイスの配列を指定して、プロキシクラスのjava.lang.Classオブジェクトを返します。 プロキシクラスは、指定されたクラスローダーによって定義され、提供されたすべてのインターフェイスを実装します。 インターフェイスの同じ順列のプロキシクラスがクラスローダーによって既に定義されている場合、既存のプロキシクラスが返されます。そうでない場合、これらのインターフェイスのプロキシクラスが動的に生成され、クラスローダーによって定義されます。
宣言
以下は* java.lang.reflect.Proxy.getProxyClass(ClassLoader loader、Class <?> …の宣言です。 interfaces)*メソッド。
public static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces)
throws IllegalArgumentException
パラメーター
- loader -プロキシクラスを定義するクラスローダー。
- interfaces -実装するプロキシクラスのインターフェイスのリスト。
返品
指定されたクラスローダーで定義され、指定されたインターフェースを実装するプロキシクラス。
例外
- IllegalArgumentException -getProxyClassに渡される可能性のあるパラメーターの制限のいずれかに違反した場合。
- NullPointerException -interfaces配列の引数またはその要素のいずれかがnullの場合。
例
次の例は、java.lang.reflect.Proxy.getProxyClass(ClassLoader loader、Class <?> …の使用方法を示しています インターフェイス)メソッド。
package com.finddevguides;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyDemo {
public static void main(String[] args) throws
IllegalArgumentException, InstantiationException,
IllegalAccessException, InvocationTargetException,
NoSuchMethodException, SecurityException {
InvocationHandler handler = new SampleInvocationHandler() ;
Class proxyClass = Proxy.getProxyClass(
SampleClass.class.getClassLoader(), new Class[] { SampleInterface.class });
SampleInterface proxy = (SampleInterface) proxyClass.
getConstructor(new Class[] { InvocationHandler.class }).
newInstance(new Object[] { handler });
proxy.showMessage();
}
}
class SampleInvocationHandler implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("Welcome to finddevguides");
return null;
}
}
interface SampleInterface {
void showMessage();
}
class SampleClass implements SampleInterface {
public void showMessage(){
System.out.println("Hello World");
}
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
Welcome to finddevguides