1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
class EXAMPLE1
-- This example demonstrates how to call Java class and instance
-- methods from Eiffel code.
-- To try this example:
--
-- compile_to_jvm example1
-- java example1
creation make
feature
make is
local
i: INTEGER; s: STRING; b: BOOLEAN
java_string, java_string_bytes, hash_map, obj: POINTER
do
-- get and print this object's Java hash code
i := hashCode( Current.to_pointer )
print( "hash code is: " )
print( i.out )
print( "%N" )
-- get and print this object's Java string value
java_string := toString( Current.to_pointer )
i := length( checkcast_java_lang_String( java_string ) )
create s.make_filled( '%U', i )
java_string_bytes := getBytes( checkcast_java_lang_String( java_string ) )
arraycopy( java_string_bytes, 0, s.to_external, 0, i )
print( "string value is: " )
print( s )
print( "%N" )
-- create hash map
hash_map := new_java_util_HashMap
-- fill hash map with entries using a java.lang.String as key and Eiffel string as value
s := "A"
java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
s := "Number_1"
obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )
s := "B"
java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
s := "Number_2"
obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )
s := "C"
java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
s := "Number_3"
obj := put( checkcast_java_util_HashMap( hash_map ), java_string, s.to_pointer )
-- get size of hash map
i := size( checkcast_java_util_HashMap( hash_map ) )
print( "hashMap size is: " )
print( i.out )
print( "%N" )
-- retrieve hash map entry
s := "B"
java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
b := containsKey( checkcast_java_util_HashMap( hash_map ), java_string )
print( "is key " )
print( s )
print( " present in hashMap: " )
print( b.out )
print( "%N" )
obj := get( checkcast_java_util_HashMap( hash_map ), java_string )
s := checkcast_example1_string( obj )
print( "string associated with key is: " )
print( s )
print( "%N" )
-- retrieve hash map entry using java.util.Map interface
s := "C"
java_string := new_java_lang_String( checkcast_aB( s.to_external ), 0, s.count )
obj := checkcast_java_util_Map( hash_map )
b := containsKey_interface( checkcast_java_util_Map( hash_map ), java_string )
print( "is key " )
print( s )
print( " present in hashMap: " )
print( b.out )
print( "%N" )
obj := get_interface( checkcast_java_util_Map( hash_map ), java_string )
s := checkcast_example1_string( obj )
print( "string associated with key is: " )
print( s )
print( "%N" )
end
feature -- externals
hashCode( p: POINTER ): INTEGER is
external "Java class java.lang.Object method int hashCode()"
end
toString( p: POINTER ): POINTER is
external "Java class java.lang.Object method java.lang.String toString()"
end
length( p: POINTER ): INTEGER is
external "Java class java.lang.String method int length()"
end
checkcast_java_lang_String( p: POINTER ): POINTER is
external "Java class java.lang.String checkcast"
end
getBytes( p: POINTER ): POINTER is
external "Java class java.lang.String method byte[] getBytes()"
end
arraycopy( a1: POINTER; a2: INTEGER; a3: POINTER; a4: INTEGER; a5: INTEGER ) is
external "Java class java.lang.System method static void arraycopy(java.lang.Object,int,java.lang.Object,int,int)"
end
new_java_lang_String( a1: POINTER; a2: INTEGER; a3: INTEGER ): POINTER is
external "Java class java.lang.String new (byte[],int,int)"
end
new_java_util_HashMap: POINTER is
external "Java class java.util.HashMap new ()"
end
checkcast_aB( p: POINTER ): POINTER is
external "Java class byte[] checkcast"
end
put( p: POINTER; a1: POINTER; a2: POINTER ): POINTER is
external "Java class java.util.HashMap method java.lang.Object put(java.lang.Object,java.lang.Object)"
end
checkcast_java_util_HashMap( p: POINTER ): POINTER is
external "Java class java.util.HashMap checkcast"
end
size( p: POINTER ): INTEGER is
external "Java class java.util.HashMap method int size()"
end
containsKey( p: POINTER; a1: POINTER ): BOOLEAN is
external "Java class java.util.HashMap method boolean containsKey(java.lang.Object)"
end
get( p: POINTER; a1: POINTER ): POINTER is
external "Java class java.util.HashMap method java.lang.Object get(java.lang.Object)"
end
checkcast_example1_string( p: POINTER ): STRING is
external "Java class example1.string checkcast"
end
containsKey_interface( p: POINTER; a1: POINTER ): BOOLEAN is
external "Java interface java.util.Map method boolean containsKey(java.lang.Object)"
end
get_interface( p: POINTER; a1: POINTER ): POINTER is
external "Java interface java.util.Map method java.lang.Object get(java.lang.Object)"
end
checkcast_java_util_Map( p: POINTER ): POINTER is
external "Java class java.util.Map checkcast"
end
end -- class EXAMPLE1
|