[Java] String... 스트링[] 뭐가 좋을까?가변 매개변수 및 정렬

13761 단어 Java

String... 스트링[] 뭐가 좋을까?가변 매개변수 및 정렬



가변 매개변수로 받아들일지 아니면 정렬로 받아들일지.
둘 다 같은 건데 뭐가 좋을까요?
ArgumentsWorkMain.java
public class ArgumentsWorkMain {
    public static void main(String... args) {
        ArgumentsWorkMain me = new ArgumentsWorkMain();

        // test1 は可変引数
        // test1(String str, String... args)
        me.test1("");
        me.test1("a", "a");
        me.test1("a b", "a", "b");
        me.test1("", new String[] {});
        me.test1("a", new String[] { "a" });
        me.test1("a b", new String[] { "a", "b" });
        me.test1("((null))", null);
        // ↑ この null は (String[]) null とみなされるが (String) null にもできる
        me.test1("((null))", (String[]) null);
        me.test1("(null)", (String) null);

        // test2 は配列
        // test2(String str, String[] args)
        me.test2("", new String[] {});
        me.test2("a", new String[] { "a" });
        me.test2("a b", new String[] { "a", "b" });
        me.test2("((null))", null);
        me.test2("((null))", (String[]) null);
        // me.test2("(null)", (String) null); // -> Error
    }

    void test1(String str, String... args) {
        StringBuilder buf = new StringBuilder();

        if (args != null)
            for (String e : args)
                if (e != null)
                    buf.append(e).append(" ");
                else
                    buf.append("(null)");
        else
            buf.append("((null))");

        if (!str.equals(buf.toString().trim()))
            System.out.println(str + " != " + buf);
    }

    void test2(String str, String[] args) {
        StringBuilder buf = new StringBuilder();

        if (args != null)
            for (String e : args)
                if (e != null)
                    buf.append(e).append(" ");
                else
                    buf.append("(null)");
        else
            buf.append("((null))");

        if (!str.equals(buf.toString().trim()))
            System.out.println(str + " != " + buf);
    }
}
특별히 가다.보통 선물 안 주죠?
결론: 각자 좋아하는 사람을 선택한다.
나는 가변 파라미터를 비교적 좋아한다.
↓ 이런 코드도 썼지?하나하나귀찮아요!
import java.util.Arrays;
import java.util.List;
...
    void test3() {
        List<String> list0 = Arrays.asList();
        List<String> list1 = Arrays.asList("a");
        List<String> list2 = Arrays.asList("a", "b");
        List<String> list3 = Arrays.asList(new String[] {"a", "b", "c"});

        test2("", (String[]) list0.toArray());
        test2("a", (String[]) list1.toArray());
        test2("a b", (String[]) list2.toArray());
        test2("a b c", (String[]) list3.toArray());
    }
끝.

좋은 웹페이지 즐겨찾기