0

Bukkit の API には、呼び出そうとするとあいまいに見える関数が 2 つあります。

int getMaxHealth()
double getMaxHealth()

呼び出したい関数をコンパイラに指定する方法がわかりません。のように直接比較する代わりに

if (getMaxHealth() < 40d) { /* Code */ }

変数を「直接」割り当ててみました

double health = getMaxHealth();

ただし、どちらの場合も、IntelliJ はあいまいなメソッドであると不平を言います。どうすればこれを修正できますか?

4

4 に答える 4

1

オーバーロードされたメソッドは、パラメーター リストによって決定されます。戻り値の型を変更しても、コンパイラの観点からはメソッドのシグネチャは変更されません。そのため、Java のコンパイラは、許可されていない同じメソッドの再定義について不平を言っており、IntelliJ や Eclipse とは何の関係もありません。

于 2013-08-29T08:13:25.340 に答える
1

多くの場合、IntelliJ は問題の解決に役立ちます。間違っているとマークされているコードにカーソルを置き、Alt+Enter を押します (Windows バージョンを使用している場合、他の OS でのキーの組み合わせはわかりません...)。IDE が解決策を提案する場合があります。

于 2013-08-29T08:09:11.097 に答える
1

どうやら、エラーがあってもプログラムをコンパイルできるようです。だから私はそれが問題を解決すると思います!

于 2013-08-29T08:18:30.880 に答える
0

私はあなたがこれを修正できるとは思わない。

私がEclipseを使用して書いた場合、コードはあなたのものです:

int getMaxHealth() {return 1;}
double getMaxHealth() {return 1d;}

コンパイルさえしません。どちらの方法も重複としてマークされています。

于 2013-08-29T07:46:19.050 に答える