我对方法的finally和final的顺序有疑问。以下两项均被编译器接受,但是它们之间是否有实际区别?

public synchronized final void update() {
    // Do stuff
}

public final synchronized void update() {
    // Do stuff
}

最佳答案

JLS 8.4.3


如果在方法声明中出现两个或多个(不同的)方法修饰符,则按惯例(尽管不是必需的),它们的出现顺序与上面在MethodModifier生产中显示的顺序一致。


并将生产MethodModifier订单指定为(请参阅我提供的JLS链接):

MethodModifiers:
    MethodModifier
    MethodModifiers MethodModifier

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


因此,JLS指定synchronizedfinal可以按任何顺序出现。

因此,您的问题的答案是:没有区别。

10-04 23:32