--****************************************************************************** --* * --* File: LuaJava_06.lua Revision: 1.0 * --* * --* Purpose: will Lua types (and values) be preserved? * --* * --* Creation: 06.11.2004 Last Modification: 07.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) * --* * --****************************************************************************** local JavaClass = luajava.bindClass("LuaJava_06"); println(); println("LuaJava_06 - will Lua types (and values) be preserved?"); println(); local function TypeAndValue (Argument) return type(Argument).." ("..tostring(Argument)..")"; end; println("when Java accepts generic objects:"); println(" Java2Lua(nil) -> "..TypeAndValue(JavaClass:Java2Lua(nil))); println(" Java2Lua(true) -> "..TypeAndValue(JavaClass:Java2Lua(true))); println(" Java2Lua(123.456) -> "..TypeAndValue(JavaClass:Java2Lua(123.456))); println(" (as a comparison: tostring(123.456) -> "..tostring(123.456)..")"); println(" Java2Lua('Test') -> "..TypeAndValue(JavaClass:Java2Lua('Test'))); println(" Java2Lua({}) -> "..TypeAndValue(JavaClass:Java2Lua({}))); println(" Java2Lua(function() end) -> "..TypeAndValue(JavaClass:Java2Lua(function() end))); println(); println("when Java accepts specific types (boolean, double, String, Object):"); --println(" Java2Lua2(nil) -> "..TypeAndValue(JavaClass:Java2Lua2(nil))); -- crashes println(" Java2Lua2(nil) -> (crashes)"); println(" Java2Lua2(true) -> "..TypeAndValue(JavaClass:Java2Lua2(true))); println(" Java2Lua2(123.456) -> "..TypeAndValue(JavaClass:Java2Lua2(123.456))); println(" Java2Lua2('Test') -> "..TypeAndValue(JavaClass:Java2Lua2('Test'))); println(" Java2Lua2({}) -> "..TypeAndValue(JavaClass:Java2Lua2({}))); println(" Java2Lua2(function() end) -> "..TypeAndValue(JavaClass:Java2Lua2(function() end))); println(); println("when Java accepts generic Lua objects:"); println(" Java2Lua3(nil) -> "..TypeAndValue(JavaClass:Java2Lua3(nil))); -- the following Java method calls all yield "Invalid method call. No such method." --println(" Java2Lua3(true) -> "..TypeAndValue(JavaClass:Java2Lua3(true))); println(" Java2Lua3(true) -> (crashes)"); --println(" Java2Lua3(123.456) -> "..TypeAndValue(JavaClass:Java2Lua3(123.456))); println(" Java2Lua3(123.456) -> (crashes)"); --println(" Java2Lua3('Test') -> "..TypeAndValue(JavaClass:Java2Lua3('Test'))); println(" Java2Lua3('Test') -> (crashes)"); println(" Java2Lua3({}) -> "..TypeAndValue(JavaClass:Java2Lua3({}))); println(" Java2Lua3(function() end) -> "..TypeAndValue(JavaClass:Java2Lua3(function() end))); println(); println("it seems impossible to combine both approaches:"); --println(" Java2Lua4(nil) -> "..TypeAndValue(JavaClass:Java2Lua4(nil))); println(" Java2Lua4(nil) -> (still crashes)"); println(" Java2Lua4(true) -> "..TypeAndValue(JavaClass:Java2Lua4(true))); println(" Java2Lua4(123.456) -> "..TypeAndValue(JavaClass:Java2Lua4(123.456))); println(" Java2Lua4('Test') -> "..TypeAndValue(JavaClass:Java2Lua4('Test'))); println(" Java2Lua4({}) -> "..TypeAndValue(JavaClass:Java2Lua4({}))); println(" Java2Lua4(function() end) -> "..TypeAndValue(JavaClass:Java2Lua4(function() end)));