可変引数の不思議
可変引数は基本的には配列だけど、
interface Hoge { void hoge(String[] args); void piyo(String...args); } class HogeImpl implements Hoge { public void hoge(String...args) {} public void piyo(String[] args) {} }
こんな感じのことが可能らしい。
ちなみに、HogeImpl型の変数を介してはhogeメソッドのみ、Hoge型の変数を介してはpiyoメソッドのみが可変引数を受け取ることが出来る。
HogeImpl h1 = new HogeImpl(); h1.hoge("hoge", "piyo", "foo", "bar"); // これはコンパイルエラー //h1.piyo("hoge", "piyo", "foo", "bar"); Hoge h2 = h1; // これはコンパイルエラー //h2.hoge("hoge", "piyo", "foo", "bar"); h2.piyo("hoge", "piyo", "foo", "bar");
これを使うと、引数の最後が配列であるメソッドをオーバーライドして、可変引数のメソッドとして使える!
・・・ただ、より具体的なクラスが必要だから使う機会はないだろうなぁ。