javaのダウンキャストについて PrintDens と PFileRead1クラスでClassCastExceptionが発生します。 どーしたらいいですか? PrefとPref1は画像のものになります
javaのダウンキャストについて PrintDens と PFileRead1クラスでClassCastExceptionが発生します。 どーしたらいいですか? PrefとPref1は画像のものになります class PrintDens implements Disp { public void output(Pref p) { Pref1 P = (Pref1) p; //downcast ←←←←ここ System.out.printf("%-9s %5d %5d %.3f\n" , P.getName(), P.getPop(), P.getArea(),P.getDens()); } } /*---------------------------------------------------------------------------*/ interface Disp{ void output(Pref p); } /*---------------------------------------------------------------------------*/ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.File; import java.util.Scanner; import java.util.ArrayList; public class PFileRead1 { public static void main(String[] args) { ArrayList<Pref> p = new ArrayList<Pref>(); // 都道府県データ記録用リスト生成 PFRead pfr = new PFRead(); // ファイル読み込みクラスのインスタンス生成 pfr.open("pref.txt"); // ファイルを開く while (pfr.next()==true) { // ファイルから一行ずつ読み込み、リストに登録する p.add(new Pref(pfr.getName(),pfr.getPop(),pfr.getArea())); } pfr.close(); // ファイルを閉じる Disp pout = new PrintDens(); // 表示用インスタンス生成 System.out.println("----------------------------"); Select sa = new SelectAll(); // 全件選択インスタンス生成 ArrayList<Pref> a = sa.find(p); // 全件選択(findメソッド)実行 for (int i=0; i<a.size(); i++) pout.output(a.get(i)); // 選択結果表←←←←ここ System.out.println("----------------------------"); } }
Java・8閲覧
ベストアンサー
> p.add(new Pref(pfr.getName(),pfr.getPop(),pfr.getArea())); newしているのはPrefなんですから、それを継承して拡張しているPref1にキャストしたらエラーになるのは当然です。 どうしたら良いかはあなたが何をどうしたいのかによって全く変わってくるので、正確な話は無理ですが、少なくともnewするクラスをPref1にすればクラスキャストエラーは起こらなくなるでしょう(面倒だから試してませんが)。
質問者からのお礼コメント
そこの個所を修正したら正常に動作しました。 ありがとうございます。
お礼日時:1/21 21:51