我一直在尝试运行以下 Scala 代码:
import javax.swing.JFrame
class ScalaClass(title: String) extends JFrame(title: String) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
// ...
}
object Main {
def main(args: Array[String]) : Unit = {
var sFrame : JFrame = new ScalaClass("Hi");
}
}
Run Code Online (Sandbox Code Playgroud)
JFrame.EXIT_ON_CLOSE应等于3. 但是,当我尝试在 IntelliJ IDEA 中构建和运行时,我收到此错误:
Error:(4, 35) value EXIT_ON_CLOSE is not a member of object javax.swing.JFrame
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
添加import javax.swing.JFrame.EXIT_ON_CLOSE也不起作用。
有谁知道我做错了什么?
我最近在看书,第一次Java Concurrency in Practice接触到这个方法。Collections.unmodifiableMap(...)该方法围绕现有的创建一个只读包装器Map,任何修改返回值的尝试Map(根据Javadocs)都会导致UnsupportedOperationException抛出异常。其他集合类也存在类似的方法。
这让我非常担心,因为 anunmodifiableMap()仍然返回 a Map,但不支持所有相关方法。事实上,它还会在写入操作上引发异常,这意味着它无法Map在大多数应用程序中替代“正确的”异常。
我是一名学生,对自己识别设计缺陷的能力还没有信心,但是这些不是分别违反了Interface segregation和Liskov substitution原则吗?