小编Fre*_*uvn的帖子

如何在java8中获取默认的ZoneOffset?

使用java8我们知道使用ZoneId.default()可以获得系统默认值ZoneId,但如何获取默认值ZoneOffset

我看到一个ZoneId有一些"规则",每个规则都有一个ZoneOffset,这意味着一个ZoneId可能有一个以上ZoneOffset吗?

java timezone timezone-offset java-8

46
推荐指数
1
解决办法
4万
查看次数

T 和 T 和有什么不一样?在科特林?

有什么区别:

fun <T, R> List<T>.map1(transform: (T) -> R): List<R> {
    return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)

fun <T, R> List<T>.map2(transform: (T?) -> R): List<R> {
    return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)

fun <T, R> List<T?>.map3(transform: (T?) -> R): List<R> {
    return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,null被接受了上述所有3个变换功能,所以:有什么区别TT?

kotlin

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

如何在kotlin中声明一个可为空的函数参数

例如:

fun f(func: () -> Any?)
Run Code Online (Sandbox Code Playgroud)

参数func表示返回Any的函数?类型.但是如何使func可以为空呢:

fun f( (func: () -> Any?)? )
Run Code Online (Sandbox Code Playgroud)

kotlin

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

如何为 Kotlin 扩展函数的接收者添加 KDoc 注释(Java 中的第一个参数,Kotlin 中的“this”)

考虑这个非扩展函数:

fun checkArguments(expression: Boolean) {
    if (!expression) {
        throw IllegalArgumentException()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在kotlin和java中使用这个函数时,我可以看到它的参数名称:expression

我还可以将相同的功能编写为扩展函数:

fun Boolean.checkArguments() {
    if (!this) {
        throw IllegalArgumentException()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我以这种方式将其编写为扩展函数时,调用它的布尔值的参数名称(this函数内的变量,又称接收器)显示为$this$checkArguments。如何为此参数添加 KDoc 文档注释?使用@param $this$checkArguments似乎没有记录它。

java extension-methods kotlin kdoc

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

如果条件检查在另一个函数中,kotlin 智能转换不起作用

例如:

fun test() {
    val s: String? = ""
    check(s != null)

    // Error: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
    s.subSequence(0, 1)
}

inline fun check(expression: Boolean) {
    if (!expression) {
        throw IllegalArgumentException()
    }
}
Run Code Online (Sandbox Code Playgroud)

check功能inline,所以它是一样的:

fun test() {
    val s: String? = ""
    //check(s != null)
    if (!(s != null)) {
        throw IllegalArgumentException()
    }

    // It worked!
    s.subSequence(0, 1)
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,即使使用contract,!= null也可以,但是 …

kotlin

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

通过Java如何计算没有list()的目录中的文件编号

不使用file.list()Files.list(path),如何计算目录中的文件编号?

我只想要一个数字,没有细节。请给我一个快速的方法。

java java-io

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