5

クラスに2つのメソッドがあります...

public void method(String var1, String var2, Object var3) {
    //do stuff
}

public void method(String var1, String var2, Object[] var3) {
    //do stuff
}

次の呼び出しを行うと...正しいメソッドが呼び出されますが、そのメソッドの最初の具体化obj.method("string", "string", obj)を呼び出そうとすると呼び出されます。obj.method("string", "string", obj[])

呼び出されると予想されるメソッドが呼び出されることを確認するために与えることができる注釈または「ヒント」はありますか? Object[]が であることは知っていますが、実行時に のメソッドが の前に呼び出されることObjectを願っています。Object[]Object

4

2 に答える 2

8

いいえ、私にとっては、これは予想どおり 2 番目のメソッドを呼び出します!

一方を他方の上に呼び出したい場合、与えるヒントは通常、メソッドが期待する正確なパラメーター型へのキャストです (このキャストは .) でも機能しますnull)。(Object)arr呼び出されますが、デフォルトでは間違いなく2番目のメソッドが呼び出されます(JVMのすべての正しいバージョンで-一般的な信念に反して、このシナリオはJLSで明示的にカバーされているため、あいまいではありません.)

于 2013-10-10T13:17:01.307 に答える