Java初心者はここです;私はC#でずっと快適です。それは、次のパズルが私に言った。私は Javaで異なるパラメータの署名を持ついくつかのオーバーロードされたクラスを書いています。しかし、Objectとdoubleを区別することはできないようです。ただし、ObjectとDoubleには問題ありません。誰かが何が起こっているのか説明できますか?Javaがオブジェクトと数値を区別できないのはなぜですか?
public void item(Object a, Object b, String c, String d) {/*Stuff*/}
public void item(double a, double b, String c, String d) {/*Stuff*/}
public void UseIt(double a, double b, Double c, Double d)
{
item(a, b, someString, someOtherString); // Claims it's ambiguous
}
これは私の開発システムが馬鹿げているケースですか?
申し訳ありません。それは(私は本当にここに置くことはできません)失敗したもののようである、と私はそれを入力する前にそれをしようとしていないのミスを犯し...
あなたのコードは実際に私のために働く。私はこのクラスをコンパイル: パブリッククラスTest { 公共ボイド項目(ダブル、ダブルB、列C、列D){/ *スタッフ* /} 公共ボイド項目(オブジェクトB、列C、文字列オブジェクトd){/ * Stuff * /} public void UseIt(double a、double b、Double c、Double d){ アイテム(a、b、 ""、 ""); //曖昧であると主張します } } –
文字列引数に2つのdoubleを渡しています。 –
引数b、c、dはちょうど赤いニシンです。 –