서로 다른 타입 Type1과 Type2가 있을 때, List<Type1>은 List<Type2>의 하위 타입도 상위 타입도 아니다.
⇒ List<String> 은 List<Object>의 하위타입이 아니다.
⇒ 서로 다른 타입의 매개변수화 타입( parameterized type / ex. List<String> )은 “리스코프 치환 원칙”에 어긋난다.
List<Object>가 할 수 있는 일을 List<String>은 제대로 수행하지 못한다.
리스코프 치환 원칙