我有一个Java程序,有几个类,它们是:
i)形状 ii)广场 iii)矩形 iv)圈子 v)三角形 vi)绘制画布 vii)申请
方形,矩形,圆形和三角形都继承自 Shape
类现在,在 Drawing Canvas 类中,我有两个方法,一个用于将Shape类型的对象写入文件,另一个用于从文件中读取对象。
这是代码:
保存到文件的方法完美无缺。但是,我在从文件中读取对象并将它们附加到Shapes ArrayList时遇到问题。
实际上,应用程序给我的错误是 java.lang.String无法强制转换为shapes_assignment.Shape 。
如何读取存储在文本文件中的文本并使用它再次重新创建对象?谢谢:))
答案 0 :(得分:2)
您需要编写一个读取器,它将获取输入字符串,并从中创建一个形状。这是一个简单的示例,使用Java Date class向您展示这是如何工作的。没有你的Shape构造函数,我不能为你编写你的Shape。
Date today=new Date();
long var_to_write=today.getTime();
//Save this in to a file, then read it out as long var_in_file
Date previousTime=new Date(var_in_file);
答案 1 :(得分:0)
您正在将Array添加到ArrayList中。
while(input.hasNext())
{
temp.add(input.next());
}
Shapes.add((Shape)temp.get(i));
这里你试图强制 字符串(temp.get(i)将返回一个字符串)到形状类型,这是导致 ClassCaseException 。
在从文件中读取并使用Shape实例填充ArrayList(temp)后创建一个Shape实例。
List<Shape> temp = new ArrayList<Shape>();
//read from the scanner and make an Shape object.
Shape shape = new Shape(your arguments to the Shape cons);
now, while adding into shapes you wont need a case, as you made yourself sure that your ArrayList would only accept Shape
shapes(temp.get(i));
答案 2 :(得分:0)
您应该使用ObjectOutputStream
来编写形状列表,并从ObjectInputStream
中检索它们:
out.writeObject(Shapes);
Shapes = (ArrayList)in.readObject();
假设Shapes
是ArrayList
。