小编Phi*_*üll的帖子

如何检查Kotlin中的泛型类型

我正在尝试在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.

我在这里错过了什么?

generic-programming kotlin

55
推荐指数
3
解决办法
2万
查看次数

如何分配或返回受联合约束的通用 T?

换句话说,如何为联合类型集中的不同类型实现特定于类型的解决方案?

鉴于以下代码...

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)

generics go type-switch

12
推荐指数
1
解决办法
9025
查看次数

SockJS消息的最大大小是多少?

我正在使用Vert.x和SockJS来传输封装在消息中的数据.是否有规范SockJS/Websocket消息有多大?

javascript websocket vert.x sockjs

6
推荐指数
1
解决办法
1538
查看次数