Java 使用ObjectInputStream计算对象的和
再次需要我的逻辑帮助。假设Java 使用ObjectInputStream计算对象的和,java,fileinputstream,Java,Fileinputstream,再次需要我的逻辑帮助。假设Loan类存在,我有一个包含Loan对象的文件。我正在从文件中读取贷款对象并计算贷款总额。我给了其中一个实例一个变量名ld,只是为了向自己证明getLoanAmount()方法是有效的 现在,在while循环的最后,我一直在思考如何计算贷款对象,但将它们转换为整数。我认为input.readObject()方法正在返回对象的一个实例,因此只需要像这样获取整数值: sum = sum + input.readObject().getLoanAmount(); 但是,我得
Loan
类存在,我有一个包含Loan
对象的文件。我正在从文件中读取贷款
对象并计算贷款总额。我给了其中一个实例一个变量名ld
,只是为了向自己证明getLoanAmount()
方法是有效的
现在,在while循环的最后,我一直在思考如何计算贷款对象,但将它们转换为整数。我认为input.readObject()
方法正在返回对象的一个实例,因此只需要像这样获取整数值:
sum = sum + input.readObject().getLoanAmount();
但是,我得到一个错误,说它找不到符号getLoanAmount()
,这就是我困惑的地方。我以为我搞定了。有人能告诉我为什么我的逻辑是错误的吗。像往常一样,我会非常感激的。代码如下:
import java.io.*;
import java.util.Date;
public class RestoringObjects19_7 {
public static void main(String[] args) throws IOException {
int sum = 0;
try {
ObjectOutputStream output = new ObjectOutputStream(
new FileOutputStream("Exercise19_7.dat"));
Loan ld = new Loan(1000);
System.out.println(ld.getLoanAmount()); //WORKS HERE
output.writeObject(ld);
output.writeObject(new Loan(2000));
output.writeObject(new Loan(3000));
output.writeObject(new Loan(4000));
output.writeObject(new Loan(5000));
output.close();
ObjectInputStream input = new ObjectInputStream(
new FileInputStream("Exercise19.7.dat"));
while(true) {
sum = sum + input.readObject().getLoanAmount(); //ERROR HERE??
}
} catch (Exception e) {
System.out.println("Sum: " + sum);
}
}
}
这看起来像是家庭作业,所以我会给你提示,而不是完整的答案:
- 方法
返回的类型是input.readObject()
Object
是在类型为getLoanAmount()
的对象上定义的方法Loan
希望这能帮助您找出代码的错误所在。如果这是作业,大家的共识是您应该添加
作业
标记。请注意,此函数实际上不会引发IOException。好的,从您的回答来看,我想这可能是多态性领域的一个决定性问题。将尝试…只是尝试执行sum=sum+(Loan)input.readObject().getLoanAmount()之类的操作;它不起作用。我感谢你的帮助。我会进一步研究。感谢您至少让我走上了正确的道路。@Addy75该cast正在铸造getLoanAmount和readObject的结果,因此getLoanAmount仍然在Object.ok的实例上被调用。看起来我需要先获取对象,然后再强制转换对象,然后使用get方法获取整数值。好的,我将尝试不同的方法,看看如何做到这一点。谢谢你,我来了!