このコード構成では:
public MyClass(Integer... numbers) {
do_something_with(numbers[]);
}
numbers
これがコンパイル時にチェックされるような方法で少なくとも1つのエントリを含むことを要求することは可能ですか? (もちろん、実行時に numbers.length だけをチェックできます。)
明らかに私はこれを行うことができます:
public MyClass(Integer number, Integer... more_numbers) {
do_something_with(number, more_numbers[]);
}
しかし、これはあまりエレガントではありません。
私がこれをしたい理由は、サブクラスがこのコンストラクターを呼び出すことを単に忘れないようにするためです。これは、デフォルトでsuper()
リストに番号のない への呼び出しになります。この場合、おなじみのエラー メッセージを取得したいと思います: Implicit super constructor is undefined. Must explicitly invoke another constructor
.
このコンストラクターを非暗黙的としてマークする@-注釈のように、同じことを達成する別の方法はありますか?