2010-12-07 4 views
1

그래서이 모든 유틸리티 객체 클래스를 상속 받아서 saveToFile (filename)을 호출 할 때마다 상속 받는다. 해당 객체를 yaml 형식으로 저장합니다. To String은 파일을 yaml 형식으로 출력합니다. 필자가 실제로 할 수 있기를 원하는 것은 파일의 속성을 가진 객체의 모든 속성을 초기화하는 것이지만 미리 어떤 유형의 객체인지 미리 알고 싶지는 않습니다.객체의 유형을 결정한 다음 뱀에서 객체를 캐스팅하는 방법 yaml.load (InputStream)

내가이 작품을 잘

public void loadFromFile(String filename){ 
    try { 
     InputStream input = new FileInputStream(new File(filename)); 
     Yaml y = new Yaml(); 
     this = y.load(input); 
    } catch (IOException e) { 
     System.out.println(e); 
    } 
} 

의 라인을 따라하는 방법 뭔가를 원하는, 당신은 "이"에 객체를 할당 할 수 있다는 사실을 저장합니다.

+1

y.load (입력)에서 어떤 유형의 객체가 반환됩니까? – jzd

+2

@jzd -'java.lang.Object'를 반환합니다. – Bozho

답변

2

당신은 캐스팅해야합니다 :

또한
YourObject object = (YourObject) y.load(input); 

this에 할당하지 않습니다. 대신 객체를 외부에로드하고 다음과 같이 사용하십시오. BeanUtils.copyProperties(object, yamlObject)

yamlbeans을 살펴보십시오.

Btw, 유틸리티 메소드를 만들기 위해 캐스트가 작동하지 않습니다. 메소드에 Class<T> 인수를 더 잘 전달하고 반환 유형을 T으로 지정하는 것이 좋습니다. 캐스트를하려면 clazz.cast(..)을 사용하십시오.

관련 문제