LuaJavaを使用して整数型を強制する方法はありますか? LuaJ 3.0 beta 1(luaj-jse-3.0-beta1.jar)
で、 のインスタンスを作成しようとしていますjava.awt.Color
。Java API のコンストラクター ( JavaAPI )が利用可能であることを考えると、これがそのような問題になるとは思わないでしょう。整数をコンストラクターに強制的に入れることに興味がある理由は、利用可能なコンストラクターがまたはColor
のいずれかの 3 つまたは 4 つの引数を取るためです。Lua の数値型はであるため、LuaJ (または LuaJava) はコンストラクターのバージョンを呼び出します。int
float
double
float
最初はこれで問題ないと思っていたのですが、使ってみたらエラーメッセージが届いていることに気づきましたColor
。値がコンストラクターに適切に渡されておらず、Color
オブジェクトは本質的に破損しており、識別可能なエラーはありませんでした (何もクラッシュせず、表示されませんでした)。
簡単な例を次に示します。
local j_color = luajava.newInstance( "java.awt.Color", r, g, b );
print( j_color );
r = 1.0
このコンストラクタにg = 0.2
,を渡しb = 0.2
てから print するとj_color
、
java.awt.Color[r=0,g=0,b=1]
出力で。実際、私は好きなものをr
とであるg
限りb = 0
問題なく使用できますが、それ以外の場合は、痛みや苦しみが生じます。
他の誰かがこの問題に遭遇したかどうか知りたいです。解決しない場合は、LuaJ プロジェクトの PI に連絡し、報告します。
補足として、カスタムメイドの Java 関数を使用してColor
. この問題が存在すること、および使用するコンストラクターを指定する方法があるかどうか、またはLuaJavaにdoubleではなく整数を使用するように明示的に指示する方法があるかどうかについて、私はより懸念しています。
アップデート
また、four-float コンストラクターを使用しようとしましたが、同じ問題が発生します。次のいずれかの値を渡すとalpha=0, 0.5, 1
、コンストラクターは適切に機能します。それ以外の場合は、上記の結果が得られます。