2011-08-02 13 views
9

インタフェースおよび/または抽象クラスの動的実装を構築するためのデファクトソリューションとは何ですか?私は基本的にしたいことは次のとおりです。Javaのインタフェース/抽象クラスの動的実装

interface IMyEntity { 
    int getValue1(); 
    void setValue1(int x); 
} 
... 
class MyEntityDispatcher implements WhateverDispatcher { 
    public Object handleCall(String methodName, Object[] args) { 
    if(methodName.equals("getValue1")) { 
     return new Integer(123); 
    } else if(methodName.equals("setValue")) { 
     ... 
    } 
    ... 
    } 
} 
... 
IMyEntity entity = Whatever.Implement<IMyEntity>(new MyEntityDispatcher()); 
entity.getValue1(); // returns 123 

答えて

15

それはProxyクラスです。

class MyInvocationHandler implements InvocationHandler { 
    Object invoke(Object proxy, Method method, Object[] args) { 
    if(method.getName().equals("getValue1")) { 
     return new Integer(123); 
    } else if(method.getName().equals("setValue")) { 
      ... 
    } 
    ... 
    } 
} 

InvocationHandler handler = new MyInvocationHandler(); 
IMyEntity e = (IMyEntity) Proxy.newProxyInstance(IMyEntity.class.getClassLoader(), 
               new Class[] { IMyEntity.class }, 
               handler); 
+2

プロキシは、抽象クラスではなく、インタフェースでのみ使用できます。 –

関連する問題