有没有办法使用 LuaJava 强制整数类型?我正在尝试在 LuaJ 3.0 beta 1(luaj-jse-3.0-beta1.jar)
中创建一个java.awt.Color
. 考虑到构造函数 ( JavaAPI )的 Java API 可用性,您不会认为这是一个问题。我对将整数强制放入构造函数感兴趣的原因是Color
可用的构造函数采用int
or的三个和四个参数float
。由于 Lua 的数字类型是double
,因此 LuaJ(或 LuaJava)调用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 使用整数,而不是双精度数。
更新
我也尝试使用四浮点构造函数,并且出现了同样的问题。如果我传入以下值之一:alpha=0, 0.5, 1
构造函数正常运行。其他任何事情都会产生上述结果。