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

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,一切都很好。


这是为什么?


四季花海
浏览 103回答 2
2回答

慕哥6287543

查看 Java 规范8.4.3。方法修饰符说:MethodModifier:     (one of)      Annotation public protected private      abstract static final synchronized native strictfp这些必须在返回类型之前,返回类型是最后一个。修饰符顺序并不重要,因为它们尊重返回类型作为最后一个。这就是为什么public synchronized void有效。

喵喔喔

你要返回什么?你是返回同步,还是返回无效?由于 synchronized 不是您可以返回的东西,因此它必须是无效的。你看,返回类型必须总是紧跟在函数名之前。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java