1 {-# LANGUAGE OverloadedStrings #-}
3 import qualified Data.ByteString.Lazy as B
10 import qualified Java.Lang
11 import qualified Java.IO
13 hello :: NameType Method
14 hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid
18 newMethod [ACC_PUBLIC] "<init>" [] ReturnsVoid $ do
20 invokeSpecial Java.Lang.object Java.Lang.objectInit
23 hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do
24 getStaticField Java.Lang.system Java.IO.out
25 loadString "Здравствуй, мир!"
26 invokeVirtual Java.IO.printStream Java.IO.println
27 getStaticField Java.Lang.system Java.IO.out
28 loadString "Argument: %d\n"
30 allocArray Java.Lang.object
34 invokeStatic Java.Lang.integer Java.Lang.valueOfInteger
36 invokeVirtual Java.IO.printStream Java.IO.printf
40 newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do
42 invokeStatic "Test" hello
47 testClass = generate "Test" test
50 B.writeFile "Test.class" (encodeClass testClass)