Object型のキャスト – プログラミング – Home

通知
すべてクリア

Object型のキャスト


リフレア
 リフレア
(@リフレア)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

しつもんです。informationListというLinkedListを
作り、informationList.getLastで、最後の要素を
取り出したいのですが、getLastメソッドがオブジェクト型を
返すので、String element=(String)informationList.getLast();
とキャストしたのですが、ClassCastException?が出てしまう
のですが・・。キャストの仕方がわるいのでしょうか?


引用解決済
トピックタグ
joan
 joan
(@joan)
ゲスト
結合: 23年前
投稿: 42
 

たぶん、リストに追加した変数の型に問題があるのではないかと。
add で追加した変数のクラス名をゆっくり見直してみてください。

コンパイルしてないので、コンパイルが通る保証はしませんが
一応下のコードでいけるはずです。

LinkedList informationList = new LinkedList();
CString data = データッス;

// data をリストの最後に追加
// String は Object クラスのサブクラスなので Object 型にキャ
ストして追加する必要はない
informationList.add(data);

// 最後に追加した String を取得
// この時は戻り値が Object なので String に変換する必要がある。
String result = (String)informationList.getLast();

System.out.println(result);


返信引用
リフレア
 リフレア
(@リフレア)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

リストに追加した変数はたぶんString型です。String型の
変数を3つ持つコンストラクターの型にキャストして
addしてます。
list.add(new コンストラクタ名(a[0],a[1],a[2]));
のように。
どうでしょうか?


返信引用
リフレア
 リフレア
(@リフレア)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

型変換をしないと@1902みたいに表示されてしまい、
ちゃんとした文字で出力されないのです。
どなたかご教授ください。お願いします。


返信引用
とおり
 とおり
(@とおり)
ゲスト
結合: 21年前
投稿: 43
 

>リストに追加した変数はたぶんString型です。String型の
>変数を3つ持つコンストラクターの型にキャストして
>addしてます。
>list.add(new コンストラクタ名(a[0],a[1],a[2]));

多分ではなく、はっきりさせて下さい。
というか、キャストって?
どー見ても、コンストラクタ名で指定したクラスのインスタンスを生成して
addしているようにしか見えないが。
Java言語の基礎やり直し?


返信引用
joan
 joan
(@joan)
ゲスト
結合: 23年前
投稿: 42
 

すいません、返事が遅くなってしまいました(^^ゞ

> list.add(new コンストラクタ名(a[0],a[1],a[2]));

これだと、List に追加しているオブジェクトはString型ではなく

> String型の変数を3つ持つコンストラクターの型

になってしまいます。
もし、String を追加するのであれば、コンストラクタと同時に
toString メソッドを呼び出して、String を戻します。

list.add(new コンストラクタ名(a[0],a[1],a[2]).toString() );
~~~~~~~~~~
私には、このリストの中にString、String型の変数を3つ持つクラスの
どちらが入るのか正しいかわかりませんので、これ以上教えることは
できません。とりあえず、リストの中身の型を確認することが大事でしょうね。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

System.out.println(
informationList.getLast().getClass()
);


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました