JAvaにおけるStringの可変パラメータの定義(String...)

1329 ワード

JAvaのString...
プログラミングをするとき、このような方法がよくあります.
public void paintReportChart(int i, String… args) { final String chartTitle; final String titleName; final String descX; final String descY;//omit the code … chartpanel.updateUI(); chartpanel.repaint(); }
まずjdk 1.5以降の新しい特性であり,可変パラメータ,すなわちvarargsと呼ぶ.以前に可変パラメータを定義したのはString[]argsの方法で宣言した.jdk 1.5以降はより簡便な方法があります.実際、String[]argsとString...argsは本質的に何の違いもありません.String...argsは最後にString[]argsに変換して作ったのですが、String...argsという形式は応用上より柔軟で簡便です.たとえば、次の2つの方法があります.
public static void callMe1(String[] args) { System.out.println(args.getClass() == String[].class); for(String s : args) { System.out.println(s); } }
public static void callMe2(String... args) {  
    System.out.println(args.getClass() == String[].class);  
    for(String s : args) {  
        System.out.println(s);  
    }  
}  
彼らはこのように呼び出すことができます.
callMe1(new String[] {“a”, “b”, “c”}); callMe2(“a”, “b”, “c”); callMe2(new String[] {“a”, “b”, “c”}); でもできない
callMe1(“a”, “b”, “c”); これがString...args定義方法の柔軟性です.また、1つのメソッド定義にString...argsパラメータがある場合、実パラメータが伝達されるパラメータの個数は最大個数より少ない任意であってもよく、パラメータを伝達しなくてもよい.
しかし、このような定義は便利であると同時に一定の代価を払わなければならない.それはString...argsはパラメータの最後のパラメータでしか定義できないが、String[]argsにはこのような制限はない.だから私たちは定義するときにそれぞれ必要なものを取りました.
転載:https://xfxlch.iteye.com/blog/1695055