2012-05-10 1 views
0

논리에 대한 도움이 필요했습니다. Loan 클래스가 있다고 가정하면 Loan 개체가 들어있는 파일이 있습니다. 나는 파일에서 Loan 개체를 읽고 총 대출 금액을 계산하고 있습니다. 인스턴스 중 하나에 변수 이름 ld을 주면 나에게 getLoanAmount() 메서드가 작동한다는 것을 증명합니다.ObjectInputStream을 사용하여 오브젝트의 합계 계산

이제 while 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); 
     } 
    } 
} 
+1

숙제 인 경우 합의문에 '숙제'태그를 추가해야합니다. – ChristopheD

+0

이 함수는 실제로 IOException을 throw 할 수 없습니다. –

답변

1

, 그래서 당신이 대신 만발한 답의 힌트를 줄 것이다 : 여기 코드는 형식을 반환 input.readObject()

  • 방법은 Object입니다.
  • getLoanAmount()Loan 유형의 개체에 대해 정의 된 메서드입니다.

희망 사항은 코드에 어떤 문제가 있는지 파악하는 데 도움이됩니다.

+0

좋아요, 당신의 답을 통해서 제가 추측하고있는 다형성의 영역을 따라 주조 문제가 될 수 있다고 생각합니다. 그것을 시도 할 것이다 .... 그냥 sum = sum + (Loan) input.readObject(). getLoanAmount(); 그것은 작동하지 않았다. 도와 주셔서 감사합니다. 나는 더 자세히 살펴볼 것이다. 적어도 저를 올바른 길로 데려다 주셔서 감사합니다. – Addy75

+0

@ Addy75 그 캐스트가 getLoanAmount 및 readObject의 결과를 캐스팅하고 있으므로 getLoanAmount가 여전히 Object의 인스턴스에서 호출되고 있습니다. –

+0

확인. 그래서 내가 먼저 객체를 얻고, 객체를 두 번째로 캐스팅하고, get 메소드를 사용하여 정수 값을 얻어야하는 것처럼 보입니다. 좋아, 나는 이것을 달성하는 방법을보기 위해 여러 가지 방법을 시도 할 것이다. 고마워요 - 그만 해요! – Addy75