2011-08-07 4 views
2

제 프로그램에서는 많은 String 및 StringBuilder를 사용합니다. StringBuilder toString() 메서드를 제거하고 전체에서 CharSequences를 사용하고 싶습니다. 그러나 IndexOf 메서드 (StringBuilder와 String 모두에서 사용할 수 있지만 다른 구현에서는 사용할 수 없음)에 액세스해야합니다. 이 함수를 표시하는 인터페이스를 구현하려면 어떻게해야합니까?그것을 지원하는 CharSequence 구현의 indexOf

답변

2

글쎄, 당신이 알려진 유형의 테스트를 하드 코딩, 그것을 수행하여 합리적으로 쉽게 할 수있는 "수동"그렇지

public static int indexOf(CharSequence input, String needle) { 
    if (input instanceof String) { 
     String text = (String) input; 
     return text.indexOf(needle); 
    } 
    if (input instanceof StringBuilder) { 
     StringBuilder text = (StringBuilder) input; 
     return text.indexOf(needle); 
    } 
    // TODO: Do this without calling toString() :) 
    return input.toString().indexOf(needle); 
} 

이 유형을 하드 코딩하는 측면에서 매우 추한이지만 ' 좋아.

+0

. 감사. – killachaos

1

하나의 생각은 각 유형에 대해 여러 정적 구현이있는 클래스를 갖는 것입니다.

public class Strings{ 

    public static int indexOf(String input, String c){ 
     return input.indexOf(c); 
    } 

    public static int indexOf(StringBuilder input, String c){ 
     return input.indexOf(c); 
    } 

    public static int indexOf(YourClass input, String c){ 
     return input.indexOf(c); 
    } 
} 

이 방법, 당신은 단지 구현이있는 각 유형에 대한 Strings.indexOf(whatever)를 호출 할 수 있습니다. 컴파일러/jvm이 사용할 메서드를 선택하게하여 코드를 깨끗하게 유지합니다.

0

당신은 TextUtils에서 기본 방법을 사용할 수 있습니다 : 내가해야 할 것이 무엇인지, 난 그냥뿐만 아니라 추한라고 생각 짐작하고 다른 방법이 있다면 궁금 indexOf