luaj-lua中实例化JavaClass

3 篇文章 0 订阅

LuaJ提供了LuaJavaLib来方便地实现Lua和Java的混用。

使用luajava在Lua中实例化JavaClass

LuaLogTest.java一个简单的Log示例类

package com.mislead.luaj.java_lua;

public class LuaLogTest {

  public static String TAG = LuaLogTest.class.getSimpleName();

  public static void staticInfo(String msg) {
    System.out.println(String.format("static info: %s", msg));
  }

  public void info(String msg) {
    System.out.println(msg);
  }

  public void error(String msg) {
    System.err.println(msg);
  }
}

test.lua

-- use luajava.newInstace to instace a java class
local luaLog = luajava.newInstance("com.mislead.luaj.java_lua.LuaLogTest")
-- use java class methods
luaLog:info("this is info")
luaLog:error("this is error")

-- use luajava.bindClass to bind a class to lua
-- then use luajava.new to instance it
local LuaLog = luajava.bindClass("com.mislead.luaj.java_lua.LuaLogTest")
-- use static java class method & field
LuaLog:staticInfo("info")
print(LuaLog.TAG)
-- instance class
local newLog = luajava.new(LuaLog)
-- use java class method
newLog:info("this is newLog info")
-- a JFrame example
local jframe = luajava.bindClass("javax.swing.JFrame")
local frame = luajava.newInstance("javax.swing.JFrame", "this is text")
frame:setDefaultCloseOperation(jframe.EXIT_ON_CLOSE)
frame:setSize(300, 400)
frame:setVisible(true)

在Java中使用luajava示例

Globals globals = JsePlatform.debugGlobals();
String currentTime = globals.get("luajava")
    .get("bindClass")
    .call(LuaValue.valueOf("java.lang.System"))
    .invokemethod("currentTimeMillis").toString();
System.out.println(currentTime);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值