Listable
、Node
にはListable
、そしてSinglyLinkedList
にはノードが含まれていると宣言しました。 SinglyLinkedList
は、方法matches()
をListable
に使用してsearch()
メソッドを含んでいます。できるだけ一般的にはListable
としたいので、引数の量はmatches()
にする必要があります。 search()
は、一致するthis
の要素のみを含む新しいSinglyLinkedList
を返します。次の実装でパラメータリストを転送するには
ルック:配列searchArgs
:matchesArgs
は一つだけの要素を持っているので、
interface Listable {
// ...
boolean matches(Object... matchesArgs);
// ...
}
class Node {
Listable data;
Node next;
}
class SinglyLinkedList {
// ...
public SinglyLinkedList search(Object... searchArgs) {
// ...
somewhere: [someNode].data.matches(searchArgs)
// ...
}
// ...
}
これは、動作しません。私はそれがsearchArgs
と等しく、[searchArgs]
ではないことを望みます。
matches()
の実装で配列をアンパックする必要はありません。matches()
を使用するたびに引数の配列を渡す必要があり、作成されていない場所で問題を処理しようとします。
私の目では、問題は、matches()
に転送するときにsearchArgs
が別の配列にパックされていることです。この配列を渡す代わりに、その要素をパラメータとして渡したいと思います。
Javaでこれを行う方法はありますか?あなたはマッチを(使用するときの引数の配列を渡す必要となる
あなたのコードはあいまいであるため警告が表示されます。このあいまいさの根源は、バリデーションメソッドで 'Object'を使うことです。メソッドが貧弱な 'Object'型を受け取らないようにあなたのシステムをモデル化することを考慮してください。 – Gabriel