2017-08-02 4 views
-2

標準のJDKバージョン(Runnable、Queueなど)を拡張しないカスタムインターフェイス(IRunnable、IQueueなど)で定義されたコンポーネントを含むJavaプロジェクトを管理する必要があります。 。)でも非常に似ています。 JUnitテストクラスやカスタムインターフェースを変更せずに(つまりデフォルトのものを拡張するために)一種の「設定ファイル/クラス」の中で、カスタムインターフェースを標準インターフェースにマップ/置換する方法があれば、誰にも分かりますか?Java - カスタムインターフェイスと標準インターフェイス間のマッピング

ありがとうございます。

EDIT 1:追加のサンプルコード

/* Custom interface */ 
public interface IRunnable { 
    public void run() 
} 

...その後、私は(書くことができるようにするためには、RunnableをタイプしてIRunnable型オブジェクトを「置換」する必要がテストコードに例):引数taskは、スケジューリングを実行するために)Runnable(とないIRunnableあるべき

IRunnable task; 
(...some code to populate task...) 
ScheduledFuture schedFut = Executors.newScheduledThreadPool(1).scheduleAtFixedRate(task, 1, 1, TimeUnit.SECONDS); 

...。

EDIT 2:添加さらに明確化

IはMyAbstractClassためのJUnitテスト(または任意の関連する非抽象拡張)を書かなければならないと仮定する。

public abstract MyAbstractClass { 
    protected IRunnExec executor; 
    public abstract IRunnable job(); 
    public final void execute() { 
     executor.schedule(job()); 
    } 
} 

/* Custom interface */ 
public interface IRunnExec<Results> { 
    public Results schedule(IRunnable task) 
} 

元のインターフェースを維持するために最善のアプローチは何である(例えばIRunnableIRunnExec)は、であり、インターフェイス/クラス(例えばRunnableScheduledExecutorService)(JDKによって提供される)標準を使用するように? カスタムインターフェイスごとに「アダプタ」を作成する必要がありますか?

+1

詳細な具体的なコード例がないと、これはあまりにも抽象的な答えがありません。これらのnot-quite-JDKインタフェースのいずれかの完全な定義、どのように使用されているか、そして何を達成したいのかを示すサンプルコードを示してください。 –

+0

なぜ否定的な投票ですか? –

+0

あなたが本当に達成したいことを理解するのに十分な情報がここにないので、私は疑います。あなたが提供した例は、そのように働くことはできません。あるインタフェースを別のインタフェースに適合させるには、我々が持っていない両方のインタフェースの契約を詳細に理解する必要があります。これは[XY問題](http://xyproblem.info)です。 –

答えて

1

あなたがそれらを取り除くことができる場合は、そうするように教えてください。

できない場合は、カスタムインターフェイスと標準インターフェイスの間にアダプタを作成します。

例えば、

public class IRunnableRunnableAdapter implemets Runnable { 
    private IRunnable iRunnable; 
    public IRunnableRunnableAdapter (IRunnable iRunnable) { 
     this.iRunnable = iRunnable; 
    } 

    public void run() { 
     iRunnable.run(); 
    } 
} 

また、消費者(例えばエグゼキュー)を模倣したが、あまりにもカスタムインタフェースを受け入れるクラスを作成することにより、cunsuming側でそれに取り組む、それらにアダプターを適用し、その後、標準的な執行にそれらを渡すことができます。

関連する問題