質問編集履歴
2
したがって、List<String> names = new ArrayList<String>\(\);とするというのは不適切でしたので、修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
public void prints(ArrayList<String>) {};
|
9
9
|
|
10
10
|
上ではArrayListもLinkedListでも同様に表示できますが、下ではArrayListしか表示させることができません。
|
11
|
-
|
11
|
+
また、コレクションを宣言するときは
|
12
12
|
List<String> names = new ArrayList<String>();
|
13
13
|
のように書くことが推奨されています。
|
14
14
|
|
1
質問の補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,4 +29,15 @@
|
|
29
29
|
上記の例を見ていると、多態性は曖昧に捉えることでメリットを得ているのに対し、型安全では厳密に捉えた方が良いとということがわかります。
|
30
30
|
この二つって相容れないものだと思うのですが、実際どうなんでしょうか。
|
31
31
|
|
32
|
-
これに対する皆さんの考えを教えてください。
|
32
|
+
これに対する皆さんの考えを教えてください。
|
33
|
+
|
34
|
+
補足
|
35
|
+
なんだか意図がうまく伝わっていない気がしたので、補足しておきます。
|
36
|
+
型安全は型によって、安全を担保しようという考え方で、enumやジェネリクスもこれに当たります。
|
37
|
+
enumによって、ある型に入れることのできる候補というのは制限することができますし、ジェネリクスも同様で、ArrayList<String>だとString型しか入りません。
|
38
|
+
一方、多態性はアップキャストすることによるメリットを享受しようという考えに基づいています。
|
39
|
+
まとめると、多態性は曖昧に捉えており、型安全は厳密に範囲を狭めているということになるわけですが、これらのコンセプトって相容れないものだと思うのです。
|
40
|
+
しかしながら、現実のプログラミングにおいて、この二つの考えって共存しているとは思うのですが、一つの部分(ステートよりもさらに小さな単位で、例えば評価式)に着目してみると、どちらかしか使ってないと思うのです。
|
41
|
+
つまり、多態性と型安全の両方のコンセプトを一つ部分に取り込むことはできないと思うのですが、その使い分けについて、教えてくださいというのが私の質問だったのです。
|
42
|
+
書き方が悪かったですね。
|
43
|
+
申し訳ないです。
|