Java 関数のオーバーロード メカニズムで最も一致するメソッドを決定するにはどうすればよいですか?
Java 関数のオーバーロード一致ルールは次のとおりです。 完全一致: パラメータのタイプと数値が変数パラメータに正確に一致: 変数パラメータ メソッドは、任意の数またはタイプのパラメータに一致します パッケージ化タイプと元のタイプの変換: 基本タイプとパッケージ化タイプは相互に排他的になる可能性があります 変換のオートボックス化/unboxing: 基本型の値とラップされた型オブジェクトは自動的に派生クラス型に変換できます: 派生クラス オブジェクトは基本クラスの型パラメーターと一致できます
Java マッチング関数オーバーロード メカニズムのルール
関数オーバーロードを使用すると、同じクラス内に同じ名前で異なるパラメーターの型を持つ複数のメソッドを作成できます。オーバーロードされたメソッドが呼び出されるとき、JVM は引数リストに基づいて呼び出すのに最適なメソッドを決定します。
最適一致の判定ルール
- 完全一致: メソッドのパラメータリストに異なるものが存在する場合call パラメータの型と数が正確に一致する場合、そのメソッドは最も一致するメソッドです。
class Example { public void method(int a) { // ... } public void method(int a, int b) { // ... } }
method(1)
を呼び出すと、method(int a)
と一致します。
- 可変パラメータ (Varargs) に準拠: メソッドが可変パラメータとして宣言されている場合、そのメソッドは任意の数または型 (プリミティブ型とオブジェクトを含む) で使用できます。パラメータは一致します。可変個引数メソッドは最後のメソッドとして宣言する必要があります。
class Example { public void method(Object... args) { // ... } public void method(int a, int b) { // ... } }
method(1)
または method(1, 2, "Hello")
の呼び出しは、method(Object... args と一致します) )
。
- ラップされた型とプリミティブ型の間の変換: 基本型のラップ型 (
Integer
など) と対応するプリミティブ型 (int など)
) は相互に変換できます。 raw 型パラメータに一致するメソッドが存在するが、ラップされた型パラメータを使用して呼び出された場合、またはその逆の場合でも、そのメソッドは一致していると見なされます。
class Example { public void method(int a) { // ... } public void method(Integer a) { // ... } }
method(1)
または method(new Integer(1))
の呼び出しは、これら 2 つのメソッドと一致します。
- オートボックス化とボックス化解除: 基本型の値がラッパー型パラメーターに渡されると、その値は自動的にラッパー型オブジェクトにボックス化されます。ラップされた型オブジェクトが基本型パラメーターに渡されると、自動的にボックス化されて基本型値になります。
class Example { public void method(int a) { // ... } public void method(Integer a) { // ... } }
method(1)
または method(Integer.valueOf(1))
の呼び出しは、これら 2 つのメソッドと一致します。
- 派生クラス型: 派生クラス オブジェクトを使用するパラメーターを呼び出す場合、パラメーターはその基本クラス型のパラメーターと一致することもあります。
class Animal { public void makeSound() { // ... } } class Dog extends Animal { public void makeSound() { // ... } }
makeSound(new Dog())
の呼び出しは、makeSound(Animal a)
メソッドとも一致します。
実際的なケース
次のメソッドを持つ Shape
クラスがあるとします。
public class Shape { public void draw() { // ... } public void draw(int size) { // ... } public void draw(int size, boolean fill) { // ... } }
## を呼び出すとき#Shapeshape = new Shape();shape.draw(5);、JVM は最も一致するメソッドが
draw(int size) であると判断します。これは、呼び出しで
size パラメータが指定されているが、
fill パラメータが指定されていないため、
draw(int size, boolean fill) は完全に一致しません。
以上がJava 関数のオーバーロード メカニズムで最も一致するメソッドを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
