0

luajava中这两个函数有什么区别:

-- I know this creates a new instance of a class
local instance = luajava.newInstance("path.to.class");
-- But it seems this does as well?
local class = luajava.bindClass("path.to.class");

奇怪的是,我找不到任何明确的答案。大多数使用这些功能的网站都不会费心描述差异,而且我似乎能够从instance和调用相同的方法class

4

1 回答 1

0

bindClass 只能访问静态成员并且不会创建对象的实例。这对于访问静态字段和方法或访问枚举很有用。newInstance 接受参数并实际构造一个可以拥有自己的非静态字段和方法的类。

尝试将类与非静态成员绑定可能会产生以下错误。

Exception in thread "main" org.luaj.vm2.LuaError: @your_lua:<line_number> vm error: java.lang.IllegalArgumentException: Can not set <type> field your.package.YourClass.yourLocalField to java.lang.Class

据我从一些测试中看到,两者都只能访问公共字段和方法,受保护的和私有的对lua是隐藏的。

于 2016-08-23T04:25:59.167 回答