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
19 invokeSpecial Java.Lang.object Java.Lang.objectInit
22 hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do
25 getStaticField Java.Lang.system Java.IO.out
26 loadString "Здравствуй, мир!"
27 invokeVirtual Java.IO.printStream Java.IO.println
28 getStaticField Java.Lang.system Java.IO.out
29 loadString "Argument: %d\n"
31 allocArray Java.Lang.object
35 invokeStatic Java.Lang.integer Java.Lang.valueOfInteger
37 invokeVirtual Java.IO.printStream Java.IO.printf
41 newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do
45 invokeStatic "Test" hello
50 testClass :: Class Direct
51 testClass = generate "Test" test
54 B.writeFile "Test.class" (encodeClass testClass)