인 Map
인 경우 필요합니다. 맵의 값은 다른 데이터 유형의 값이므로 Object
유형입니다. Object
을 사용하면 내 문제를 해결할 수 있지만 get(key)
에 HashMap
에서 시도 할 때마다 타이프 변환해야합니다.지도에서 추출 할 때 문자를 제거 할 때
이러한 빈번한 타입 캐스팅을 제거하는 데 도움이되는 라이브러리가 있습니까?
미리 감사드립니다.
인 Map
인 경우 필요합니다. 맵의 값은 다른 데이터 유형의 값이므로 Object
유형입니다. Object
을 사용하면 내 문제를 해결할 수 있지만 get(key)
에 HashMap
에서 시도 할 때마다 타이프 변환해야합니다.지도에서 추출 할 때 문자를 제거 할 때
이러한 빈번한 타입 캐스팅을 제거하는 데 도움이되는 라이브러리가 있습니까?
미리 감사드립니다.
아니요. Object
유형을 사용하여지도의 값을 저장해야하는 경우 캐스팅을 피할 수 없습니다.
Map
에 포함될 수있는 모든 값 유형이 공통 인터페이스를 구현하거나 공통 기본 클래스를 갖는 것이 합리적인지 고려해야합니다. 이렇게하면 Object
을보다 구체적인 유형으로 대체하고 전송할 필요성을 줄이거 나 제거 할 수 있습니다.
당신은 당신의 자신의 IMPL 내부의 캐스트를 숨길 수 : 당신이 그것을 사용할 때
public class FlexiMap extends HashMap<String, Object> {
public <T> T getType(String key) {
return (T)get(key);
}
}
자바 유형을 추론 할 수있다.
Boolean b = myMap.getType("foo"); // no cast
유형이 다른 경우 어떻게 전송할 수 있다고 상상합니까? 도서관이 당신이 염두에두고있는 유형을 추측하는지 아니면 텔레파시로 정보를 전송하겠습니까? 귀하의 질문에 대한 실제 답변은 : 동일한지도에 다른 유형의 객체를 넣지 마십시오. 나쁜 습관입니다. – Dima
@Dima 당신은 그것에 대해 절대적으로 옳습니다. 그러나 가치의 수는 전용 클래스를 만드는 것을 정당화하기에 충분하지 않습니다. 그래서 현재지도에 의존하고 있으며 실제로 그것을 싫어합니다. – Vishnu
수업을 만드는 데 충분하지 않은 이유는 무엇입니까? 단점은 무엇입니까? – Dima