Slide 17
Slide 17 text
Javaっぽさ
func Mathmax(args ...interface{}) (jnigo.JObject, error) {
convertedArgs, err := jvm.ConvertAll(args)
if err != nil {
return nil, err
}
sigArgs := ""
for _, arg := range convertedArgs {
sigArgs += arg.Signature()
}
sigMap := map[string]string{"JJ":"(JJ)J", "FF":"(FF)F", "DD":"(DD)D", "II":"(II)I"}
return jvm.CallStaticFunction(
"java/lang/Math", "max", sigMap[sigArgs], convertedArgs)
}
メソッドオーバーロードをリフレクションで実現
コンパイル時に型チェックはできず、実行時に落ちるのが難点・・
Switch function signature by
argument signatures