그래서이 코드를 사용하여 YAML 파일을로드하고 있습니다.SnakeYAML이 일반적으로 사용할 수없는 객체를로드합니다
String file = "A: true\nB: 5"
Yaml yaml = new Yaml();
Map settings = (Map) yaml.load(file);
System.out.println(settings.get("A"));
마지막 줄 인쇄이 : 예상된다
class java.lang.Boolean
. 그러나, 나는 실제로 기본 경우 - 문 예를 들어, 부울를 사용하려고 할 때 다음의 경우 문이 기대 것을 말해
java: incompatible types
required: boolean
found: java.lang.Object
:
if (settings.get("A")) {
System.out.println("We want to do A!");
}
이 명령하면 오류가 발생합니다 boolean하지만 대신 java.lang.Object를 수신했습니다. 이것은 나 혼란 스럽다. 왜, 객체 클래스를 얻었을 때, 내가 원하는 타입을 반환 하나, 그 타입의 컨텍스트에서 그 객체를 사용할 수 없습니까?
처음에는 SnakeYAML이 기본 유형이 아닌 Object 유형의 서브 클래스를 리턴한다는 사실을 알지 못했습니다. 몇 가지 테스트와 소량의 생각을 통해, 나는 그것이 내 문제의 원인이 아니라는 것을 깨달았습니다.
각 값을 해당 유형으로 캐스팅하여이 오류를 수정할 수 있음을 알았지 만 YAML 파일에는 참조 할 때마다 수동으로 캐스팅하지 않으려는 다양한 값이 포함되어 있습니다. 처음에는 YAML 사용에 대한 나의 목적을 다소 상쇄합니다.
어쨌든, 부울 을 부울으로 생각하는 객체를 사용할 수없는 이유에 대한 통찰력은 크게 감사하겠습니다.