@@ -18,6 +18,7 @@ impl Random {
1818 JavaMethodProto :: new( "<init>" , "()V" , Self :: init, Default :: default ( ) ) ,
1919 JavaMethodProto :: new( "<init>" , "(J)V" , Self :: init_with_seed, Default :: default ( ) ) ,
2020 JavaMethodProto :: new( "nextInt" , "()I" , Self :: next_int, Default :: default ( ) ) ,
21+ JavaMethodProto :: new( "setSeed" , "()J" , Self :: set_seed, Default :: default ( ) ) ,
2122 ] ,
2223 fields : vec ! [ JavaFieldProto :: new( "seed" , "J" , Default :: default ( ) ) ] ,
2324 access_flags : Default :: default ( ) ,
@@ -38,10 +39,7 @@ impl Random {
3839
3940 let _: ( ) = jvm. invoke_special ( & this, "java/lang/Object" , "<init>" , "()V" , ( ) ) . await ?;
4041
41- // TODO constant
42- let seed = ( seed ^ 0x5DEECE66D ) & ( ( 1 << 48 ) - 1 ) ;
43-
44- jvm. put_field ( & mut this, "seed" , "J" , seed) . await ?;
42+ let _: ( ) = jvm. invoke_virtual ( & this, "setSeed" , "(J)V" , ( seed, ) ) . await ?;
4543
4644 Ok ( ( ) )
4745 }
@@ -58,4 +56,14 @@ impl Random {
5856
5957 Ok ( value)
6058 }
59+
60+ async fn set_seed ( jvm : & Jvm , _: & mut RuntimeContext , mut this : ClassInstanceRef < Self > , seed : i64 ) -> Result < ( ) > {
61+ tracing:: debug!( "java.util.Random::setSeed({:?}, {:?})" , & this, seed) ;
62+
63+ let seed = ( seed ^ 0x5DEECE66D ) & ( ( 1 << 48 ) - 1 ) ;
64+
65+ jvm. put_field ( & mut this, "seed" , "J" , seed) . await ?;
66+
67+ Ok ( ( ) )
68+ }
6169}
0 commit comments