【发布时间】:2018-05-27 17:01:06
【问题描述】:
为什么静态和默认接口方法不能同步?
人们说同步是一个实现细节。好吧,strictfp 也是一个实现细节,但这并不妨碍在静态和默认接口方法上允许 strictfp。
默认方法是继承的,如果实现接口的类没有覆盖默认方法,让它已经同步可能会很方便。
我猜测 synchronized(以及 strictfp)不是继承的(我在这里吗?),但这并不能解释为什么静态和默认接口方法也允许 strictfp。
【问题讨论】:
-
这个问题跨越了两个问题的界限。你会在两个副本中找到答案,但我对此并不满意。如果他们必须在两个地方寻找一个答案,那么其他人在寻找答案时会感到脱节。
-
静态方法和接口方法的原因可能不同:
synchronized锁在this上,静态方法中没有this。对于接口,正如其他人指出的那样,它是一个实现细节,不应在方法声明中指定。不确定为什么默认接口方法不允许使用它,因为它确实可能有用,正如您所描述的那样。