为什么Observable仍然是Java 8中的一个类?

tex*_*uce 1 java java-8

相关问题:

为什么java.util.Observable不是抽象类?

由于我们有可以包含默认方法的接口,将Observable更改为接口不是更好的主意吗?从功能的角度来看,Observable"做了一件事"但不是"是一件事".它应该改为Java 8中的接口正确吗?

Jon*_*eet 9

它应该改为Java 8中的接口正确吗?

除非您想要打破所有向后兼容性,否则不会.如果您将其更改为界面,那么任何写入:

public class Foo extends Observable
Run Code Online (Sandbox Code Playgroud)

会被打破.我怀疑它在二进制兼容性方面也可能也是无效的,但只是源不兼容就足以使它成为一个不可改变的,IMO.

同样:

  • 它目前是一个具体的类,而不是一个抽象类......因此new Observable()目前有效,但不会作为接口
  • 正如您在另一个答案中所说,默认实现使用状态...因此无法通过接口默认方法实现


Ale*_*exR 7

它将破坏向后兼容性,并且所有扩展的 类都Observable将被破坏.