次のシナリオ、2 つの関数をテストしました。
// method A
private void make(Object ...objects ){
System.out.println("varargs make");
}
// method B
private void make(){
System.out.println("non varargs make");
}
コールでmake()
。
2 つのメソッドのうち 1 つだけがコードに存在する場合は、それが呼び出されます。ただし、両方のメソッドが存在する場合は、メソッド B のみが呼び出されます。
あと 2 つの理論的な質問と 1 つの実用的な質問があります。
1) コンパイラが A に対して B を「好む」理由は何ですか?
2) これは意図的なもの (標準) ですか、それともコンパイラの実装の結果ですか?
3) コンパイラにメソッド A を「強制的に」呼び出す方法はありますか?