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