0

次の問題が発生しました。

ArrayList を拡張するカスタム リスト CustomList を作成し、それに新しいメソッドを追加しました。

public class CustomList extends ArrayList<CustomObj> {

    public CustomObj get(String searchName) {
    ...
    }
}

今、私の MainActivity.java で、この CustomList の新しいオブジェクトを作成しますが、以下を使用しています:

List<CustomObj> list = new CustomList();    (1)

ではない:

CustomList list = new CustomList();         (2)

ここまでは順調ですね!しかし、関数 get(String searchName) にアクセスしようとすると、使用できる関数がありません!

なぜ?(2)を介してCustomListを作成するときに呼び出すと、完全に機能します

4

1 に答える 1

1

これは、List(Interface) にそのようなメソッドが定義されていないためです。CustomList のオブジェクトを作成していますが、参照型は List です。したがって、List 参照でこのメソッドを強制的に呼び出すと、コンパイル時にエラーが発生します。これは単純なポリモーフィズムの例。

GPSを知らない旧車を参考にナビの詳細を調べてみると、旧車にGPSナビが付いていない現代車が旧車を拡張したケースが想像できますが、あなたは何も得られません。

于 2012-08-11T23:19:10.220 に答える