1

インターフェイスと抽象クラスが何であるかは理解していますが、次の機能を取得する方法がわかりません。可能であれば、それはです。validate()それぞれがメソッドを持つクラスがたくさんあります。各メソッドは、異なるパラメータを取る場合があります。たとえば、次のメソッドを持つクラスを作成できます。

boolean validate();
boolean validate(Block[]);
boolean validate(BlockSet[]);
...

したがって、基本的には、インターフェイスまたは抽象クラスなどを使用して、特定の名前と戻り値の型が実装されたメソッドを持つコントラクトを定義できるかどうかを知りたいのですが、パラメーターのセットに制限はありません。前もって感謝します。

4

3 に答える 3

5

これは validate(Object... args) で行うことができますが、本当にやりたいかどうかは疑問に思う価値があります。インターフェイスと抽象クラスは、類似したオブジェクトをまとめてグループ化し、実装に同じ操作で異なることをさせることができるので便利です。基になる実装が何であるかを知らずにこのメソッドを呼び出すことはできないように思われるため、それらを抽象化する理由はありません。

于 2013-06-23T05:28:18.400 に答える
0

インターフェイスで可変引数を使用してみてください。

boolean validate(Object... args)また

'boolean validate(Block... blocks)`

Blocksが常にコレクションである場合は、それらのスーパータイプを使用します。

boolean validate(Collection<Block> blocks)

ただし、いくつかのキャストを使用する必要がある場合があります。最良の選択肢ではありません。

于 2013-06-23T05:22:57.717 に答える
0

メソッドに任意の数の pf パラメータを使用させたい場合は、Varargs を使用できますが、Type も変更したい場合は実行できません。

また、達成したいことは、メソッドのオーバーロードの別の方法を見つけることですが、そのためにはメソッドを明示的に指定する必要があります。

于 2013-06-23T05:29:43.193 に答える