小编fri*_*ice的帖子

Kotlin - 当表达式超过类类型时

我正在尝试编写一个调用处理程序,它使用映射(在运行时提供)来实现接口的 getter。

这非常粗糙。我知道可能返回的基本类型,所以我可以使用when 表达式。

我还没有找到一种方法来避免使用类名作为when表达式的主题;有没有更好的办法?

class DynamicInvocationHandler<T>(private val delegate: Map<String, Any>, clzz: Class<T>) : InvocationHandler {

    val introspector = Introspector.getBeanInfo(clzz)
    val getters = introspector.propertyDescriptors.map { it.readMethod }

    override fun invoke(proxy: Any, method: Method, args: Array<Any>?): Any? {
        if (method in getters) {
            // get the value from the map
            val representation = delegate[method.name.substring(3).toLowerCase()]
            // TODO need better than name
            when (method.returnType.kotlin.simpleName) {                
                LocalDate::class.simpleName -> {
                    val result = representation as ArrayList<Int>
                    return LocalDate.of(result[0], result[1], result[2])
                }
                // TODO a few …
Run Code Online (Sandbox Code Playgroud)

kotlin

2
推荐指数
2
解决办法
4467
查看次数

当我在vim中搜索然后按“ esc”时,光标返回到上一个位置

我的vim安装似乎发生了某些事情,但我不确定是什么。我是vim的长期用户(尽管我不将其用作主编辑器)。

当我搜索时:

/foo
Run Code Online (Sandbox Code Playgroud)

我想编辑找到的位置,所以按ESC(准备进入插入模式)。vim现在跳回到我从文件开始的位置。例如,如果我在3000行文件的第0行中,我搜索一个特定的字符串,在第1700行中找到它,然后想要对其进行编辑-ESC将我带回到第0行。

这是怎么回事?我是否意外设置了一些奇怪的模式?还是忘记了我应该知道的热键组合?

vim

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

标签 统计

kotlin ×1

vim ×1