0
List<Integer> list0 = new List1<Integer>();

a) 「リスト」という単語は Java のキーワードですか??

b) オブジェクトを作成するとき、クラスの名前は両側で同じであるべきではありませんか? 例えば:

Point x = new Point(1,2)

c) 次のコードは何を意味していますか?

List<Integer> list0 = new List1<Integer>();
4

6 に答える 6

8

a) いいえ、そうではありません。Interface

b) いつもではありません。右側のタイプは、割り当てられているタイプと互換性がある必要があります。同じか、サブタイプである必要があります。この場合、インターフェイスList1を実装する必要がありListます。

c)List1整数を保持する新しいインスタンスを作成します(「整数」は間違っています-「整数」でなければなりません); これは、クラスがインターフェイスをList1実装している場合にのみ有効です。Listは、コレクション (リスト) が保持できる型を制限<Integer>するジェネリック型です。

于 2012-10-03T21:06:48.010 に答える
3

List1としてどこかで宣言する必要があります

public class List1<T> implements List<T> {
...

Listはインターフェイスであるため、 を実装 する任意のクラスのオブジェクトをListtype の変数に割り当てることができますList

于 2012-10-03T21:05:06.823 に答える
2

0) No.Listはインターフェイスの名前です。参照: http://docs.oracle.com/javase/6/docs/api/java/util/List.html

1)いいえ。Javaにはポリモーフィズムがあるため、実装されたインターフェイスまたは拡張クラスの名前でオブジェクトを呼び出すことができます

于 2012-10-03T21:05:49.277 に答える
1

List は Java のインターフェースです。おそらくそれを ArrayList にインスタンス化する必要があります。

List list0 = new ArrayList();
于 2012-10-03T21:05:02.597 に答える
0
  • A. List は Java のインターフェースです。
  • B. 左側は、右側のオブジェクトが拡張または実装するスーパークラスまたはインターフェースにすることはできません。「契約による設計」をご覧ください
  • C. もしかすると、

    リスト l = 新しい ArrayList<>();

これは整数型のみを含むことができるリストです

于 2012-10-03T21:10:30.483 に答える
0

Listはキーワードではなく、タイプ、具体的には Java インターフェースです。あなたの例のコードはコンパイルされません (List1クラスが次のように定義されていない限り: class List1 implements List { ... })、ただし、次のようなものです:

List<Integer> ls = new ArrayList<Integer>();

これにより、ArrayList保持できる が作成され、その参照が型として宣言されてIntegersいる変数に割り当てられます。 などの異なるタイプのリストへの参照を保持する可能性がありますが、それがある種のリストを指していることを保証できます(null でない限り)。したがって、インターフェイスで指定されたメソッドを使用できます。lsList<Integer>lsLinkedListlsList

変数の型は、割り当ての右側にあるオブジェクトの型と同じである必要はありませんが (多くの場合そうです)、オブジェクトは同じ型であるか、変数のサブクラス/実装である必要があります。タイプ。すべてのオブジェクトが拡張されるため、Objectいつでも次のようなことができます。

Object obj = new ArrayList<Integer>();

ただし、上記のように、 from にアクセスできる唯一のメソッドは、obj参照Objectされているオブジェクトが実際にはArrayList.

于 2012-10-03T21:12:43.137 に答える