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