小编Sch*_*uca的帖子

Java 9,Set.of()和Map.of()varargs重载

我正在研究Immutable收藏的工厂方法.我看到该Set.of()方法有10个varargs重载(相同Map.of()).我真的不明白为什么会这么多.最后,ImmutableCollections.SetN<>(elements)无论如何都会调用该函数.

在文档中我发现了这个:

虽然这会在API中引入一些混乱,但它避免了varargs调用引起的数组分配,初始化和垃圾收集开销.

杂乱的确是值得的性能提升吗?如果是,理想情况下是否会为任何N元素创建单独的方法?

java collections java-9

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

在Kotlin中实现在接口中声明的属性

我是的新手Kotlin,所以我有这个界面。

interface User {
    var nickName : String
}
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个PrivateUser实现此接口的类。我还必须实现abstract成员nickName

通过构造函数非常简单

class PrivateUser(override var nickName: String) : User
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在类内实现成员时,会Idea生成此代码

class Button: User {

override var nickName: String
    get() = TODO("not implemented")
    set(value) {}
}
Run Code Online (Sandbox Code Playgroud)

让我困惑的是如何进一步实施它。

kotlin

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

Instanceof不会显示带有接口的编译错误,但是带有抽象类会显示

我认为标题是不言自明的。因此,假设我有以下代码:

interface A { }

abstract class B { }

class C { }

C c = new C();

System.out.println(c instanceof A); //fine
System.out.println(c instanceof B); // compile error
Run Code Online (Sandbox Code Playgroud)

这个问题的评论中,我读到:

编译器永远无法知道给定类型是否未实现接口,因为潜在的子类可以实现该接口。

因此,如果interface此方法有效,为什么它不应该适用abstract class?它也应该由其他类进行扩展,因为它本身不能存在。有人可以澄清吗?

更新 编译消息:

错误:(22、28)Java:不兼容的类型:C无法转换为B

java instanceof

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

标签 统计

java ×2

collections ×1

instanceof ×1

java-9 ×1

kotlin ×1