2012-01-17 3 views
0

배열 및 문자열 참조를 모두 취할 수있는 단일 일반 메서드를 작성해야합니다. 그러한 방법 안에서, 논증에 따라, 색인을 할뿐만 아니라 평등을 검사해야합니다. 배열의 경우 인덱싱은 물론 [] operator이지만 String의 경우 charAt() 메서드입니다. 게다가, 나는 인수를 반복하고 싶다. 그래서 배열의 경우 나는 length 필드를 사용할 것이고 String의 경우 나는 length() 메소드를 사용할 것이다. 평등을 위해서 배열의 경우 equals() 메서드를 사용해야하고 문자열의 문자 인 경우 ==을 사용해야합니다.배열 및 문자열 용 Java 제네릭

두 가지 별도의 오버로드 된 메서드를 작성하는 것이 좋을지, 아니면 일반적인 메서드로 만들려는 노력의 가치가 있습니다.

후자의 경우 어떻게 수행할까요?

+0

정확히이 방법으로 달성하려는 것은 무엇입니까? – legendofawesomeness

+0

과부하; 당신은 다른 타입을 가지고 있습니다. –

답변

0

문제에 대한 설명에서 두 가지 오버로드 된 메서드를 작성하는 것이 좋습니다.

무엇이 무엇이든지간에 그것들을 하나로 결합함으로써 얻을 수있는 것이 명확하지 않습니다. 그러나 그 일을하는 것은 아마도 사소한 노력을 필요로 할 것이고 그 결과는 꽤 복잡 할 것입니다.

게다가 배열과 String을 모두 사용할 수있는 단일 메서드는 인수로 Object을 가져야합니다. Object을 수락하면 사람들은 lots으로 대처법을 알 수없는 방법으로 전화를 걸 수 있습니다. 컴파일 타임 오류 대신 결합 된 메서드는 런타임에 실패해야합니다.

0

char[] -s 및 String -s에 대해 동일한 결과를 얻으려고합니다. 일반적인 메소드 (java에서 연산자 오버로딩이 부족하기 때문에 imo)를 작성할 가치가 없지만 char[]String (또는 그 반대로)으로 쉽게 변환 한 다음 동일한 코드를 실행할 수 있습니다 (괜찮은 경우).

+0

이 반드시 char [] 일 필요는 없으며,'equals()'가 오버라이드 된 멋진 객체'myObjs []'를 사용할 수 있습니다. :) –

+0

이 경우 확실히 다른 방법입니다. (오버로드가 부족하기 때문에) 문자열 리터럴 유형과 "기타"유형에 대해 동일한 작업을 수행 할 때 상황을 상상할 수는 없습니다. – zeller

1

java의 배열은 객체이므로 하나의 Object를 수신하고 "instanceof"함수를 사용하여 테스트하는 메소드를 작성할 수 있습니다.

public class MethodTest { 

public static void main(String[] args) { 
    String[] tst = new String[]{"SOME","TEXT"}; 
    doSomething(tst); 
    doSomething("TEST"); 
} 

public static void doSomething(Object o) { 
    if(o instanceof String) { 
     System.out.println((String) o); 
    } else if(o instanceof String[]) { 
     String something[] = (String[]) o; 
     for(String s : something) { 
      System.out.println(s); 
     } 
    } 
} 

} 

하지만 두 가지 방법이 가장 좋은 방법이 될 것이라고 생각 ...

+0

배열에 대한 +1은 객체입니다 – zeller

0

과부하 방법. 일반적인 방법으로이를 해결하려는 노력은 낭비 일 가능성이 높습니다.

+0

그래서 그것은 Java generics에서 해결할 수 있습니까? 권자 –