--****************************************************************************** --* * --* File: LuaJava_08.lua Revision: 1.0 * --* * --* Purpose: will Java types be preserved while stored within Lua? * --* * --* Creation: 21.11.2004 Last Modification: 21.11.2004 * --* * --* Platform: IBM-compatible PC running Windows 98SE * --* * --* Environment: Lua 5.0, LuaJava 1.0b3, Java 1.4.2 * --* * --* Author: Andreas Rozek Phone: ++49 (7031) 222305 * --* Bunsenstraße 80/1 Fax: - * --* D-71032 Böblingen EMail: Info@Andreas-Rozek.De * --* Germany * --* * --* URL: http://www.Andreas-Rozek.de/ * --* * --* Copyright: the software is published under the "GNU Lesser General Pub- * --* lic License" (see "http://www.fsf.org/copyleft/lesser.html" * --* for additional information) * --* * --* Comments: (none) * --* * --****************************************************************************** println(); println("LuaJava_08 - will Java types be preserved while stored within Lua?"); println(); --**** 1st half: create Java objects and check their type (both within Lua) **** local String = luajava.bindClass("java.lang.String"); local function TypeAndValue (Argument) return string.sub(String:valueOf(Argument:getClass()),7).."("..String:valueOf(Argument)..")"; end; local BooleanObject = luajava.newInstance("java.lang.Boolean","true"); -- oops! "true" println(" java.lang.Boolean(true) -> "..TypeAndValue(BooleanObject)); local StringObject = luajava.newInstance("java.lang.String","(just a test)"); println(" java.lang.String('(just a test)') -> "..TypeAndValue(StringObject)); local HashtableObject = luajava.newInstance("java.util.Hashtable"); println(" java.util.Hashtable() -> "..TypeAndValue(HashtableObject)); local FileObject = luajava.newInstance("java.io.File","Test.dat"); println(" java.io.File('Test.dat') -> "..TypeAndValue(FileObject)); --**** 2nd half: accept objects from Java and send them back to Java again **** local JavaClass = luajava.bindClass("LuaJava_08"); local function ValueFromJava (Index) local JavaValue = JavaClass:fromJava(Index); if (type(JavaValue) == "userdata") then println( " Lua got a ",string.sub(String:valueOf(JavaValue:getClass()),7), " from Java as \"",type(JavaValue),"\"" ); else println( " Lua got an object from Java as \"",type(JavaValue),"\"" ); end; return JavaValue; end; local function ValueToJava (Index,JavaValue) return JavaClass:toJava(Index,JavaValue); end; println(); for i = 0,10 do println(); local JavaValue = ValueFromJava(i); println(ValueToJava(i,JavaValue)); end;