in protocol/triple/triple_protocol/codec.go [354:443]
func getArgType(v any) string {
if v == nil {
return "V"
}
switch v.(type) {
// Serialized tags for base types
case nil:
return "V"
case bool:
return "boolean"
case []bool:
return "[Z"
case byte:
return "byte"
case []byte:
return "[B"
case int8:
return "byte"
case []int8:
return "[B"
case int16:
return "short"
case []int16:
return "[S"
case uint16: // Equivalent to Char of Java
return "char"
case []uint16:
return "[C"
case int: // Equivalent to Long of Java
return "long"
case []int:
return "[J"
case int32:
return "int"
case []int32:
return "[I"
case int64:
return "long"
case []int64:
return "[J"
case time.Time:
return "java.util.Date"
case []time.Time:
return "[Ljava.util.Date"
case float32:
return "float"
case []float32:
return "[F"
case float64:
return "double"
case []float64:
return "[D"
case string:
return "java.lang.String"
case []string:
return "[Ljava.lang.String;"
case []hessian.Object:
return "[Ljava.lang.Object;"
case map[any]any:
// return "java.util.HashMap"
return "java.util.Map"
case hessian.POJOEnum:
return v.(hessian.POJOEnum).JavaClassName()
// Serialized tags for complex types
default:
t := reflect.TypeOf(v)
if reflect.Ptr == t.Kind() {
t = t.Elem()
}
switch t.Kind() {
case reflect.Struct:
v, ok := v.(hessian.POJO)
if ok {
return v.JavaClassName()
}
return "java.lang.Object"
case reflect.Slice, reflect.Array:
if t.Elem().Kind() == reflect.Struct {
return "[Ljava.lang.Object;"
}
// return "java.util.ArrayList"
return "java.util.List"
case reflect.Map: // Enter here, map may be map[string]int
return "java.util.Map"
default:
return ""
}
}
}