0

私は A と B の 2 つのインターフェースを持っています。私は関数を書いていて、両方のインターフェースを使用するオブジェクトだけを取りたいと思っています。これは私が試してきたことの一部です。私の質問が明確であることを願っています。

    public void function((? implements A,B) thing) {
        // do things
    }

    public <T extends A, T extends B> void function(T thing) {
        // do things
    }

    public <T extends A,B> void function(T thing) {
        // do things
    }

しかし、これらの試みはどれもうまくいきませんでした。これについての洞察を事前に感謝します。

4

1 に答える 1

1

A&から拡張する 3 番目のインターフェイスを作成して、Bそれをメソッド マーカーとして使用することもできます...

public interface C extends A, B {
}

その後、心配する必要があるのはC...

public <T extends C> void function(T thing) {
    // do things
}

Cこれは、メソッドを呼び出すすべての人がand だけでなく and を実装しAなければならないことを意味しBますが、一線を越えて取得する必要があります...

あれは...

public class MyAB implements A, B {
}

に渡すことはできません。実装するfunction必要MyABがありますC

于 2013-09-16T01:48:32.617 に答える