Is there any reason that the package statement in

2019-07-27 22:00发布

问题:

I am beginning with the Java Programming language; and I have a simple question:

In java packages, if the class is part of a package, the package statement must be the first line in the source code file, before any import statements that may be present.

Is there any valuable reason for the package statement should be at the beginning?

回答1:

Is there a reason? Sure, the language designers made a design decision that it had to be at the start of the compilation unit. From JLS:

CompilationUnit is the goal symbol (§2.1) for the syntactic grammar (§2.3) of Java programs. It is defined by the following productions:

CompilationUnit:
    [PackageDeclaration] {ImportDeclaration} {TypeDeclaration}

So, you've got to have zero or one package declarations, then zero or more import declarations, then zero or more type declarations.

Could it have been different? Absolutely; but it is the way it is.



回答2:

See the JLS:

CompilationUnit:

[PackageDeclaration] {ImportDeclaration} {TypeDeclaration}

A compilation unit consists of three parts, each of which is optional...

And to be precise: you do not need to have the package statement on the first line. The when you want to have a package statement, that statement must be the first line that not empty or a comment/empty (unless, as correctly pointed out ... in the very special package-info.java).

The underlying reason is probably to make implementing the Java compiler easier to do - as you simply know the enclosing package name when reaching the first class declaration.

That is all there is to this.



回答3:

Conceptual there is no reason. You may parse the whole file first and build your in memory representation later as you like. But I think the valuable reason you are asking for is when writing a parser it is easier if you know the package early on, because everything else should be done in the context of that package.



标签: java package