3

型パラメーターを持つインターフェイスの用途は何ですか? 彼らは本当に何のために使われていますか?私の理解は正しいです。私がこのインターフェースを持っているとしましょう

public interface Moveable <Person>{
    void move(double x, double z);
}

これは、タイプ Person のオブジェクトだけがこれを使用/実装できるということですか?

4

2 に答える 2

7

これは典型的なパターンではなく、あなたの場合、型パラメーターは何もしていません。これがより良い例です。

public interface Movable<T> {
    T move();
}

これで、move は常にオブジェクトまたはその他のより一般的なクラスを返すと言うだけでなく、コードは実装者が指定した型を返します。

編集:

public MyMover implements Movable<Truck> {
    public Truck move(){
        return new Truck();
    }
}

インターフェイスの実装者を特定のタイプに制限することはできません。必要に応じて、パッケージで制限できます。おそらく、抽象クラスの方がうまくいくでしょう。

于 2012-07-06T04:12:36.347 に答える
1

Does this mean that only objects that are Type Person can use implement this?

いいえ、正確ではありません。インターフェイスで使用されるジェネリックは、通常のクラスで使用される場合とまったく同じです。インターフェイスが含む/操作するオブジェクトのタイプを指定します。

を宣言する方法を考えてくださいArrayListArrayList各タイプのオブジェクトの扱いが異なるため、どのタイプのオブジェクトを含めるかを指定する必要があります。

インターフェイスの宣言では、このインターフェイスを実装するクラスは type のオブジェクトのみを保持/操作すると言っていますPerson

ジェネリックの詳細については、次のリンクをご覧ください。

オラクル: ジェネリック

于 2012-07-06T04:21:27.243 に答える