-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjava_field.go
More file actions
35 lines (31 loc) · 839 Bytes
/
java_field.go
File metadata and controls
35 lines (31 loc) · 839 Bytes
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
package emulator
import (
log "github.com/rs/zerolog/log"
)
func AccessibleObject() *javaClass {
jo := JavaClassDef()
jo.SetJvmName("java/lang/reflect/AccessibleObject")
jo.AddMethod(
JavaMethodDef("setAccessible", false).
Sig("(Z)V").
Callback(func(ctx *MethodContext){
log.Debug().Msg("AccessibleObject setAccessible call skip")
}))
return jo
}
func Field(parent *javaClass, fieldName string) *javaClass {
_=parent
jo := JavaClassDef()
jo.SetJvmSuper(AccessibleObject())
jo.SetJvmName("java/lang/reflect/Field")
jo.AddMethod(
JavaMethodDef("get", false).
Args("jobject").
Sig("(Ljava/lang/Object;)Ljava/lang/Object;").
Callback(func(ctx *MethodContext){
self := ctx.GetArg(0).(*javaClass)
log.Debug().Msgf("Field.get(%T)", self)
ctx.Return(self.FindFieldByNameOnly(fieldName))
}))
return jo
}