programing

Java의 AbstractList의 removeRange() 메서드가 보호되는 이유는 무엇입니까?

itsource 2022. 9. 21. 22:08
반응형

Java의 AbstractList의 removeRange() 메서드가 보호되는 이유는 무엇입니까?

Abstract List(및 Array List)의 remove Range 메서드가 왜protected꽤 잘 정의되고 유용한 작업처럼 보이지만, 사용하려면 List 구현을 하위 분류해야 합니다.

뭔가 숨겨진 이유가 있나요?저한테는 설명이 안 되는 것 같아.

네, 그렇게 하면 외부 코드에서 범위를 제거할 수 없기 때문입니다.대신 다음을 수행합니다.

list.subList(start, end).clear();

은 실제로 '이렇게 하다'라고 불립니다.removeRange막후에서


는 왜 OP가 필요하냐고 .removeRange에는 포함되지 .List APIpublic API 。는 「 Java ed」의 항목 여기서 합니다.「Effective Java 2nd ed」는 「Effective Java 2nd ed」의 항목 40에 기재되어 있습니다.여기서 인용하겠습니다.

지나치게 긴 파라미터 리스트를 단축하는 방법에는 세 가지가 있습니다.하나는 메소드를 여러 메서드로 분할하는 것입니다.각 메서드는 파라미터의 서브셋만 필요로 합니다.부주의하게 수행하면 너무 많은 방법이 발생할 수 있지만 직교성을 증가시켜 방법 카운트를 줄이는 데 도움이 될 수도 있습니다.예를 들어,java.util.List인터페이스입니다.서브목록에서 요소의 첫 번째 또는 마지막 인덱스를 찾는 메서드는 제공되지 않습니다.둘 다 3개의 파라미터가 필요합니다. " " 가 됩니다.subListmethod : 2개의 파라미터를 사용하여 서브목록 를 반환합니다.이 메서드는 다음과 같이 조합할 수 있습니다.indexOf ★★★★★★★★★★★★★★★★★」lastIndexOf각 방법에는 단일 매개 변수가 있으며 원하는 기능을 제공합니다. ''는subList이 방법은 위에서 동작하는 모든 방법과 조합할 수 있습니다.List인스턴스(instance)를 사용하여 하위 목록에서 임의 계산을 수행합니다.API를 사용합니다.

라고 할 수 removeRange 이 않을 만, 이 을 호출하는 것을 알 수 removeRange subListList이치노


문서에는 다음과 같이 기재되어 있습니다.

을 '이렇게 하다'라고 .clear이 리스트와 그 서브 리스트의 조작을 클릭합니다.이 방법을 덮어쓰고 목록 구현의 내부 기능을 활용하면clear이 리스트와 그 서브 리스트의 조작을 클릭합니다.

또한 OpenJDK의 및 구현도 참조하십시오.

언급URL : https://stackoverflow.com/questions/2289183/why-is-javas-abstractlists-removerange-method-protected

반응형