이것은 실제 초보자 용 질문입니다 (아직 Java 기초를 배우고 있습니다). 방법은 목록 < 문자열 >보다는 ArrayList를 < 문자열 >, 또는 왜 그들이 목록 매개 변수보다는 ArrayList의를 받아들이을 반환하는 이유변수가 Java에서 인터페이스 이름으로 선언되는 이유는 무엇입니까?
나는 (일종의)을 이해할 수있다. 메소드에 아무런 차이가없는 경우 (즉, ArrayList의 특별한 메소드가 필요하지 않은 경우), 메소드를보다 융통성 있고 호출자에게 사용하기가 더 쉬워집니다. Set 또는 Map과 같은 다른 콜렉션 유형도 마찬가지입니다.
는 이해가 안 무엇 :이 양식은 덜 자주하지만List<String> list = new ArrayList<String>();
:
ArrayList<String> list = new ArrayList<String>();
장점이 여기에 무엇인가가 일반적인 같은 지역 변수를 만드는 연습 것으로 보인다?
필자가 볼 수 있듯이 사소한 단점이 있습니다. java.util.List에 대한 별도의 "가져 오기"행을 추가해야합니다. 기술적으로 "import java.util. *"을 사용할 수는 있지만 그 중 일부는 표시되지 않습니다. 이는 "가져 오기"행이 일부 IDE에서 자동으로 추가 되었기 때문일 수 있습니다.
이것은 초록 필리아입니다. 한 구현의 효율성과 다른 구현의 효율성은 변수를 사용하는 코드에 따라 달라집니다. 두 코드 간의 긴밀한 결합을 원할 수는 없습니다. –
"나는 둘 사이에 단단한 커플 링을 원한다는 것을 알지 못합니다."사실 인터페이스에 대한 전체 개념이 실제로 느슨한 커플 링을 원한다는 사실에 근거하지 않습니까? –
물론.그러나 함수의 작업과 지역 변수 간의 결합이 느슨 할 때를 원하십니까? 특히 콜렉션 구현을 선택할 때, 콜렉션은 특정 상황에 맞게 종종 최적화되기 때문에. –