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
调用相同的方法。
答案 0 :(得分: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。