2012-03-14 29 views
2

この質問の名前を正しく指定する方法がわかりませんでした。私の質問は、インターフェイス内のジェネリック型を使用して、特定の型に実装を強制することと関係しています。このような何か:インターフェイスの一般的な種類とインプリメンテーションの一般的でない種類

public interface Test<T> { 
    void testMethod(Object<T> obj); 
} 

そして代わりに、このインタフェースの実装における一般的なオブジェクトを許可する、何とかタイプを設定します。

public class TestImpl implements Test<TestObject1> { 
    @Override 
    public void testMethod(TestObject1 obj) { 
     //Do something 
    } 
} 

public class Test2Impl implements Test<TestObject2> { 
    @Override 
    public void testMethod(TestObject2 obj) { 
     //Do something 
    } 
} 

オブジェクトをパラメタイズすることはできません。この種のものを設定する方法はわかりません。それも可能ですか?今はジェネリックオブジェクトを使用していますが、それはクラスメソッドが渡される毎回のメソッドやキャストなどをチェックする必要があります。実装の特定のクラス。

+1

なぜ「オブジェクト」を使用していますか?インタフェースデザインで 'void testMethod(T obj);'を直接使うことができます。 –

答えて

4
public interface Test<T> { 
    void testMethod(T obj); 
} 

あなたは近くでした。その後

testMethodは、渡されるクラスに固有のものであれば、あなたのクラスあなたがそれらを持っている方法を書くことができるか、...

public class TestImpl<T> implements Test<T> { 
    @Override 
    public void testMethod(T obj) { 
     //Do something 
    } 
} 

は今、あなたはnew TestImpl<TestObject>()またはnew TestImpl<TestObject2>()

を経由して、あなたのクラスをインスタンス化することができます
関連する問題