【问题标题】:Difference between bindClass and newInstancebindClass 和 newInstance 的区别
【发布时间】:2016-11-12 20:44:03
【问题描述】:

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 调用相同的方法。

【问题讨论】:

    标签: java luaj luajava


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 2011-10-20
      • 2020-01-23
      • 1970-01-01
      • 2013-10-25
      • 2012-08-03
      相关资源
      最近更新 更多