2012-06-21 3 views
1

ObjectOutputStream을 사용하여 Node (이름, 전화 번호 등의 레지스트리 정보가 들어있는 객체) 배열을 사용하여 프로그램에 .dat 파일을 쓸 수 있지만이 파일을 읽는 데 문제가 있습니다. 이전에 사용했던 Node[]과 다른 객체입니다. 나는 그들 중 하나 만들 수 있다면java.lang.Object를 다른 유형의 객체로 변환하는 방법은 무엇입니까?

내 문제가 해결 될 것 같은 것을 같은 파일을 읽어 객체 유형 Node[]로 읽어 Object 변환

  • , 또는
  • readNode[]();

나는 이것에 대한 정식 명칭을 모르므로 대답을 찾는데 문제가있다.

+6

'Object' 형 식 *이 실제로'Node []'을 나타내는 경우 * cast *는 작동합니다 :'(Node []) theObjectRead'. –

+0

"이전에 사용한 Node []과 다른 파일이 파일에 들어 있습니다. – millimoose

+0

objectoutputstream을 사용하여 파일을 쓰지 만 readobject()를 사용하면 java.lang.object 유형의 객체를 반환하고 writeobject (트리)를 사용하여 파일을 작성합니다 (트리는 노드의 배열입니다) – user1473452

답변

3

ObjectInputStream에서 리턴 된 오브젝트는 처음에 파일에 쓴 것과 동일한 유형입니다.

컴파일러는 어떤 유형이 될지 알 수 없으므로 런타임에 캐스팅해야합니다.

Object obj = stream.readObject(); 
Node[] nodes = (Node[]) obj; 

형식이 유연하여 정확히 무엇을 기대할 지 모를 경우 instanceof를 사용하여 다양한 가능성을 먼저 확인할 수 있습니다.

if (obj instanceof Node[]){ 
    // do something 
} 
else if (obj instanceof String) { 
    // do something 
} 
else { 
    throw new IOException("unexpected object in data stream "+ obj); 
} 
+0

당신과 PST에게 많은 고마워, 내 문제를 해결 했어! – user1473452

관련 문제