繁体   English   中英

bindClass和newInstance之间的区别

[英]Difference between bindClass and newInstance

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");

奇怪的是,我找不到任何明确的答案。 使用这些功能的大多数网站都不会去描述它们之间的区别,而且我似乎能够从instanceclass调用相同的方法。

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都是隐藏的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM