gpt4 book ai didi

java - JLS:包关键字之前的修饰符

转载 作者:行者123 更新时间:2023-11-30 04:03:28 27 4
gpt4 key购买 nike

我刚刚发现在类中的包声明之前可以写几个修饰符。似乎所有可见性修饰符以及字段修饰符都是允许的,并且所有这些修饰符都可以多次使用。声明可能如下所示:

public public final static private private static protected
volatile synchronized strictfp strictfp static final package de.lfnn.test;

这可能意味着什么?

对我来说,第一眼看上去它像是语法上的胡言乱语。 JLS 中的一些漏洞可以编译,但不会以任何方式影响编译器。

(是的,我已经搜索了 JLS 和网络;-))

更新:正如 @assylias 所指出的,JLS 不允许这种构造。我尝试用 javac 编译它,但失败了。尽管如此,Eclipse 编译器允许这样做。

最佳答案

我不确定您在哪里读到的,但您建议的语法无效。一个package declaration必须遵循语法:

PackageDeclaration:
Annotationsopt package PackageName ;

因此,您可以在 package 关键字之前添加注释,但仅此而已。例如,public package a.b.c; 不是一个有效的语句,并且使用 javac 会生成以下编译错误(在 jdk 8 中):

Test1.java:5: error: class, interface, or enum expected
public package a.b.c;
1 error

注意:似乎 public package a.b.c; 使用某些编译器进行编译。这看起来像是一个错误,因为它与语言规范不匹配。

关于java - JLS:包关键字之前的修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21383686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com