为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在 synchronized 之前使用 void 关键字会在 Java 中引发错误

为什么在 synchronized 之前使用 void 关键字会在 Java 中引发错误

四季花海 2022-12-28 10:41:37
import java.util.*;public class Deadlock extends Thread{    private String name;        public static void main(String[] args) {            }    public class MyObject{        public void synchronized foo(String name) { //throws error saying 'Syntax error on token "void", volatile expected'         }           }   }但是,如果,public void synchronized改为 public synchronized void,一切都很好。这是为什么?
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

查看 Java 规范8.4.3。方法修饰符说:

MethodModifier:
    (one of) 
    Annotation public protected private 
    abstract static final synchronized native strictfp

这些必须在返回类型之前,返回类型是最后一个。修饰符顺序并不重要,因为它们尊重返回类型作为最后一个。这就是为什么public synchronized void有效。


查看完整回答
反对 回复 2022-12-28
?
喵喔喔

TA贡献1735条经验 获得超5个赞

你要返回什么?你是返回同步,还是返回无效?由于 synchronized 不是您可以返回的东西,因此它必须是无效的。你看,返回类型必须总是紧跟在函数名之前。



查看完整回答
反对 回复 2022-12-28
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信