我有一个在Java上看起来像这样的方法:
public void myMethod(Object... parms);
Run Code Online (Sandbox Code Playgroud)
但我不能按照脚本的预期调用此方法.
如果,在红宝石中,我这样做:
$myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)
它给了我 org.jruby.exceptions.RaiseException: could not coerce Fixnum to class [Ljava.lang.Object
如果我在Javascript中尝试以下内容:
myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)
然后它给了我 sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method MyClass.test(number). (#2) in at line number 2
当然,如果我更改签名以获取单个对象,那么它可以工作.
我认为这是因为有人沿线不知道如何转换,说Integer要Integer[]与在第一位置的值.
我相信类似的东西myMethod({42, 2009})可以在Ruby中运行,但这看起来很丑陋 - 我希望能够myMethod(42, 2009)让它不那么混乱,特别是对于其他语言.有没有更好的解决方法呢?
谢谢.
我有一个用Java实现的游戏,当从脚本运行太多代码时遇到问题:根据脚本语言,游戏可能会有这些"打嗝",游戏会不时地冻结几帧,使得游戏"生涩"有时.
经过一些研究,我发现当垃圾收集器决定运行时就会发生这种情况.经过一些研究和测试后,我发现使用增量垃圾收集器(通过使用-Xincgc VM参数)修复了问题.是的,我知道它使GC的运行速度慢了10%,但这是我付出的代价.
有了这些背景信息,现在我要做的就是将游戏打包成.jar就像我到目前为止所做的那样,但我知道没有办法让应用程序使用增量GC而不使用-Xincgc,而我没有想要在用户只需双击.jar之前创建.bat/.sh文件.
有没有办法让.jar运行增量GC而不需要某种加载器(.bat/.sh)或它周围的包装器?有没有办法在.jar中包含该参数?
我从Java中的自定义类加载器中加载了来自几个不同.jars的几个不同的类.我创建一个自定义URLClassLoader,向它添加几个.jars并将其传递给a ServiceLoader以找到我想要的类.
我的问题是:给定一个类,有没有办法发现它是从哪个.jar加载的?