나는이 이유가 무엇인지 모르지만 나는 CharSequence
을 구현하는 클래스의 예제를 제공 할 수있다. java.nio.CharBuffer
입니다.
루프에서 charAt()
을 호출하여 이론적으로 indexOf()
을 구현할 수 있습니다. 그러나 사용자가 예상하는대로 작동하지 않습니다. 우리는 두 가지 상황을 구별 할 수 없습니다. 캐릭터는 아직 존재하지 않으며 캐릭터는 존재하지 않으며 거기에 없을 것입니다. 두 번째 경우 indexOf()
은 계약에 의해 -1을 반환해야합니다. 첫 번째 경우 모든 바이트가 도착할 때까지 기다려야합니다. 그러나 CharBuffer는 논 블로킹 IO에 속하므로 차단할 수 없습니다.
나는 이것이 가능한 이유 중 적어도 하나를 설명한다고 생각합니다.
는 편집 :
이 @Pacerier으로 매우 가치있는 의견에 따라 나는 다음을 추가합니다. IMHO CharSequence
은 다양한 상황에서 사용되는 매우 일반적인 인터페이스입니다. 이 인터페이스의 가장 잘 알려진 구현자는 String
, StringBuffer
및 StringBuilder
이며 모든 문자에 직접 액세스 할 수있는 데이터 구조의 전체 내용을 포함합니다. 그러나 일반적으로 잘못된 것입니다. java.nio.CharBuffer
은 이러한 경우의 예입니다.
그래서 당신이 묻는 것은 : 왜'CharSequence'는'indexOf' 메소드를 가지고 있지 않습니까? –
StringBuffer 및 StringBuilder에는 indexOf 메서드가 있지만 ... – Thilo
@Thilo - CharSequence에서 해당 동작을 지정하지 않는 이유는 무엇입니까? (java.nio.CharBuffer와 javax.swing.text.Segment는'indexOf'를 구현하지 않지만 쉽게 할 수 있습니다.) –