私はJAVAにまったく慣れていません。一部の関数をBasicのような言語で使用できるようにするために、JAVAでラッパーライブラリを作成しています。
コンパイラーが(Eclipseを使用して)文句を言わなかったにもかかわらず、JAVAライブラリーで一部のコードが実行されなかったことに気付いたとき、ある時点で在庫がありました。次のようにコードを置き換えることで、最終的に解決しました。
public void VideoQuality(int vQuality) //did not work
の中へ
public boolean VideoQuality(int vQuality) //works
完全なコードスニペットは次のとおりです。
public void VideoQuality(int vQuality) //did not work
{if (vQuality==16) {
vidQuality=16;
}
else if (vQuality==-16) {
vidQuality=-16;
}
else if (vQuality==0) {
vidQuality=0;
}
else
vidQuality=-16;
vitamioExt.setVideoQuality(vidQuality);
}
public boolean VideoQuality(int vQuality) //works
{if (vQuality==16) {
vidQuality=16;
}
else if (vQuality==-16) {
vidQuality=-16;
}
else if (vQuality==0) {
vidQuality=0;
}
else
vidQuality=-16;
vitamioExt.setVideoQuality(vidQuality);
return true;
}
voidはVisualBasicのsubに対応し、 booleanは関数に対応すると思います。
しかし、次のコードがvoidを使用して機能するのは奇妙だと思いました
public void setVolume(float leftVolume,float rightVolume)
{
vitamioExt.setVolume(leftVolume, rightVolume);
}
私は確かに非常に明白な何かを見逃していますが、ブールコードが機能しているのにvoidコードが機能しない理由がわかりません。
多分それは私がコードをどのように呼ぶかに依存しますか?
いくつかの光を当てることができる人はいますか?
編集:何が機能していなかったかを明確にするために、私はコードを意味しました:
vitamioExt.setVideoQuality(vidQuality);
void-snippetで実行されませんでした。
EDIT2:vidQualityはコードの別の部分で宣言されました。問題はそれらにあり、変数はすべて機能していたので、スニペットを投稿しました。
EDIT3:最後に、コンパイラーがコンパイルしなかったにもかかわらず、void-snippetを誤って呼び出したに違いないと思います。どちらの場合も、両方のスニペットを実行する必要がありますが、戻り値を期待していなかったため、もちろんvoidスニペットを使用するのが適切です。