オーバーロードされたメソッドの解決と Null 引数
null 引数が指定された場合に正しいオーバーロードされたメソッドを選択するプロセスは、特定の手順のシーケンスに従います。
1.アクセシビリティ:
最初に、コンパイラーは、呼び出し側コードのアクセス権に基づいて、アクセスできないオーバーロードされたメソッドをフィルターで除外します。
2.適用範囲:
次に、適用可能なメソッドを特定します。各仮パラメータに、暗黙的に変換できる対応する引数がある場合、メソッドは適用可能であるとみなされます。 Null 値は暗黙的に値の型 (int
や Point
など) に変換できないため、それらのメソッドは考慮から除外されます。
3. params
メソッド処理:
params
キーワードを使用するメソッドは、展開 (配列を個別の引数として扱う) または展開解除 (単一の配列引数として扱う) で呼び出すことができます。 両方に該当する場合は、展開された形式が優先され、展開されていないバージョンは破棄されます。
4.ベストマッチの選択:
最後に、コンパイラは残りの適用可能なメソッドを比較して、最も明確に一致するメソッドを見つけます。 より特殊なパラメータ型を持つメソッドは、より一般的な型を持つメソッドよりもより具体的であるとみなされます。
上記の例のように、あいまいさのあるシナリオ (同じように特定のメソッドが複数ある) では、コンパイラーは最適な候補を決定できず、コンパイル エラーが発生します。 object
パラメーターのタイプは、object[]
や string
よりも具体性が低いため、このあいまいさが生じます。
以上がオーバーロードされたメソッド解決は Null 値をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。