-
학원 day68. Map 정복기록 2022. 12. 9. 23:23
컬렉션 클래스의 객체를 만들 때 list, set, map 같은 인터페이스 타입으로 참조하는데 컬렉션 클래스로 하지 않고
인터페이스로 참조하는 이유가 따로 있는지?
Set set = new TreeSet(); 보통 이런식으로 컬렉션 클래스의 객체를 만들고 참조하는데 비해
TreeSet set = new TreeSet(); 이렇게는 잘 안하는데 왜 그런것일까?
// HashMap 객체를 반환하는 메소드
public HashMap<String, Object> getUserInfo() {
return HashMap 객체를 반환해야 한다.
}
// Map 객체를 반환하는 메소드
public Map<String, Object> getUserInfo() {
return 모든 Map의 하위 객체를 반환할 수 있다.
}
// 매개변수를 Map으로 하는 메소드
public List<Employee> getEmployees(Map<String, Object> map) {
}
public List<Employee> getEmployees(HashMap<String, Object> map) {
}
Map<String, Object> x = new HashMap<>();
Map<String, Object> x = new HashTable<>();
TreeMap<String, Object> x = new TreeMap<>();
HashMap은 클래스이고 Map은 인터페이스이다.
Map을 구현한게 HashMap이다.
매개변수나 반환타입이 부모타입인 경우가 관례적임.
return이 HashMap인지 TreeMap인지가 중요한게 아니다.
key, value 쌍으로 담겨있는 값이라는게 중요한 것이다.
그래서 Map객체라는게 더 중요한 의미를 가진다.
변수의 타입은 종종 Map타입으로 하고 실제로 구현하는 건 HashMap처럼 구체적으로 적는 관례가 있다.
자식 객체를 부모 타입의 변수안에 담아놓고 쓰는 것이다.
'기록' 카테고리의 다른 글
학원 day70. 회원가입 (0) 2022.12.13 학원 day69. (0) 2022.12.12 학원 day67. 싱글턴 정복중.... (0) 2022.12.08 학원 day66. github (0) 2022.12.07 학원 day65. Git (0) 2022.12.06