1 {-# LANGUAGE OverloadedStrings #-}
3 import qualified Data.ByteString.Lazy as B
10 import qualified Java.Lang
11 import qualified Java.IO
15 newMethod [ACC_PUBLIC] "<init>" [] ReturnsVoid $ do
17 invokeSpecial Java.Lang.object Java.Lang.objectInit
20 hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do
21 getStaticField Java.Lang.system Java.IO.out
22 loadString "Здравствуй, мир!"
23 invokeVirtual Java.IO.printStream Java.IO.println
24 getStaticField Java.Lang.system Java.IO.out
25 loadString "Argument: %d\n"
27 allocArray Java.Lang.object
31 invokeStatic Java.Lang.integer Java.Lang.valueOfInteger
33 invokeVirtual Java.IO.printStream Java.IO.printf
37 newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do
39 invokeStatic "Test" hello
44 testClass :: Class Resolved
45 testClass = generate "Test" test
48 B.writeFile "Test.class" (encodeClass testClass)