我正在尝试在Kotlin中测试通用类型.
if (value is Map<String, Any>) { ... }
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨
无法检查已擦除类型的实例:jet.Map
普通类型的检查效果很好.
if (value is String) { ... }
Run Code Online (Sandbox Code Playgroud)
使用Kotlin 0.4.68.
我在这里错过了什么?
换句话说,如何为联合类型集中的不同类型实现特定于类型的解决方案?
鉴于以下代码...
type FieldType interface {
string | int
}
type Field[T FieldType] struct {
name string
defaultValue T
}
func NewField[T FieldType](name string, defaultValue T) *Field[T] {
return &Field[T]{
name: name,
defaultValue: defaultValue,
}
}
func (f *Field[T]) Name() string {
return f.name
}
func (f *Field[T]) Get() (T, error) {
value, ok := os.LookupEnv(f.name)
if !ok {
return f.defaultValue, nil
}
return value, nil
}
Run Code Online (Sandbox Code Playgroud)
编译器显示错误:
field.go:37:9: cannot use value (variable of type string) as type T in …Run Code Online (Sandbox Code Playgroud) 我正在使用Vert.x和SockJS来传输封装在消息中的数据.是否有规范SockJS/Websocket消息有多大?