varargs 파라미터를 위해 배열이 만들어져선 안됩니다

 

varargs(...) 인수로 전달하기만을 위해 배열을 만드는 것은 아무런 의미가 없습니다. varargs는 배열입니다. 원소들을 그냥 직접 전달하기만 하면 됩니다. 그러면 자동으로 배열로 통합되어 전달됩니다. varargs(...)Object ...인 경우 배열을 전달하는 것 자체가 의도가 불명확할 수 있습니다 배열을 객체 하나로 전달하고 싶었던 건가요? 아니면 객체의 집합을 전달하고 싶었던 건가요?

규칙을 어긴 코드

public void callTheThing() {
  //...
  doTheThing(new String[] { "s1", "s2"});  // 규칙을 어긴 코드: 필요없음
  doTheThing(new String[12]);  // 규칙을 준수한 해결책
  doTheOtherThing(new String[8]);  // 규칙을 어긴 코드: 모호함
  // ...
}

public void doTheThing (String ... args) {
  // ...
}

public void doTheOtherThing(Object ... args) {
  // ...
}

규칙을 준수한 해결책

public void callTheThing() {
  //...
  doTheThing("s1", "s2");
  doTheThing(new String[12]);
  doTheOtherThing((Object[]) new String[8]);
   // ...
}

public void doTheThing (String ... args) {
  // ...
}

public void doTheOtherThing(Object ... args) {
  // ...
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project