LinkedList クラスの clone() メソッドで、Objectを作成しました。
次に、作成したObjectを LinkedList 型の変数にコピーをしようとしたところ、
下記の最終行のように代入の際に、LinkedList 型でキャストを行わなければコンパイルエラーになってしまいました。
Java
1import java.util.Arrays; 2import java.util.LinkedList; 3 4class Teratail4 { 5 public static void main(String[] args) { 6 LinkedList<String> linkedList = new LinkedList<String>(Arrays.asList("A","BB","CCC")); 7 LinkedList<String> linkedListB = new LinkedList<String>(); 8 linkedListB = (LinkedList)linkedList.clone(); 9 } 10}
ご質問①:
キャストが必要な理由は、Object型からLinkedList型へのダウンキャスト(?)だからでしょうか。
LinkedListのClone()メソッドを使っているのに、LinkedList型ではなくObject型が返却され、
実際にクローンするにはキャストが必要になるのは不便だなと思ってしまいました。
ご質問②:
LinkedList型でキャストすることによってコンパイルできますが、以下のような警告がでます。
警告は無視するしかないのでしょうか?
Compiler
1注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 2注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
ご質問③:
とあるJava入門書の中で、キャストはなるべく避けるべきだと習いました。
本ケースがキャストを避けられないケースなのでしょうか。
至らない点あるかと思いますが、ご回答いただけると大変助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/18 12:15 編集