当前位置: 首页 > 知识库问答 >
问题:

为什么我们不能在接口方法声明中使用synchronized关键字[duplicate]

闻人宏盛
2023-03-14

谁能解释一下为什么我们不能在接口中声明一个同步的方法,给出一个真实的例子。

共有1个答案

支阳波
2023-03-14

答案很简单,synchronized是一个实现细节,它不属于接口。在一个接口中,所有的方法都没有实现细节。

文件上说:

请注意,在接口中声明的方法不能声明为strictfp或native或synchronized,否则会发生编译时错误,因为那些关键字描述的是实现属性而不是接口属性。但是,在接口中声明的方法可以通过在实现该接口的类中声明为strictfp或native或synchronized的方法来实现。

您可能还会参考:在Java 8接口方法中不允许使用“synchronized”的原因是什么?

 类似资料:
  • 问题内容: 该主题充分说明了这一点-为什么不能在接口中声明静态方法的原因是什么? 上面的代码给了我以下错误(至少在Eclipse中):“接口方法ITest.test()的非法修饰符;仅允许public&abstract”。 问题答案: 这里有一些问题。第一个问题是声明静态方法而不定义它的问题。这是之间的区别 和 由于Espo提到的原因,第一个是不可能的:你不知道哪个实现类是正确的定义。 Java

  • 问题内容: 在开始阅读之前:这个问题不是关于理解monad的问题,而是关于确定Java类型系统的局限性的,这会限制接口的声明。 在我的努力去理解单子我读这个由埃里克利珀SO- 答案上询问单子简单的解释问题。在那里,他还列出了可以在monad上执行的操作: 有一种方法可以将未放大类型的值转换为放大类型的值。 有一种方法可以将未放大类型的操作转换为遵循前面提到的功能组成规则的放大类型的操作 通常,有一

  • 问题内容: 这个问题已经在这里有了答案 : 受接口保护 (13个答案) 2年前关闭。 当我实现一个方法时,我被迫使其成为一个方法。 在某些情况下,我们可能想要使用(例如,在同一软件包中进行访问的情况)或。 谁能解释这个限制的原因? 问题答案: 接口旨在定义一种类型的 公共 API,仅此而已,而不是其实现。因此,您在接口中定义的任何方法(或静态成员)都是按定义。 由于接口不能包含任何具体的实现,因此

  • 我只是试图声明字段内的主方法在Java类与不同的访问说明符...但是我不能声明与访问说明符字段为公共,这是什么原因?

  • 问题内容: 我了解这代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。 如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。 此附加约束的目的是什么? 问题答案: 因为是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用 如果要确保获取的是静态字段,而不是某些具有相同名称的局部变量,请使用类

  • 问题内容: 这是一个真正的初学者问题(我仍在学习Java基础知识)。 我可以(有点)理解为什么方法将返回而不是,或者为什么它们将接受List参数而不是ArrayList。如果对方法没有影响(即,如果不需要ArrayList中的特殊方法),则这将使该方法更加灵活,并且更易于调用者使用。其他集合类型(例如Set或Map)也是如此。 我不明白的是:创建这样的局部变量似乎是一种惯例: 虽然这种形式的频率较