包级别的方法

Nik*_*s R 4 java packages

是否可以编写一个在包级别可用的方法?假设foo是一个包:

long version = foo.getPackageVersion();
Run Code Online (Sandbox Code Playgroud)

And*_*s_D 6

不它不是.方法只能在类上定义.无处.

包不是物理的,它不能作为字节代码的容器.包只是类,枚举和接口的名称空间.


Pet*_*rey 6

你可以在scala中理论上这样做,但它创建了一个类来存储这些包级别的方法和对象.

您可以创建包级别的javadoc,并为其添加注释,但不能添加字段,构造函数或方法.

在package-info.java包中调用的文件中mypackage

/**
 * Javadoc comments for package {@code mypackage}.
 */
@PackageVersion(getPackageVersion = "1.2.3")
package mypackage;
Run Code Online (Sandbox Code Playgroud)
@Retention(RetentionPolicy.RUNTIME)
public @interface PackageVersion {
    String getPackageVersion();
}
Run Code Online (Sandbox Code Playgroud)
Package mypackage = Package.getPackage("mypackage");
PackageVersion version = mypackage.getAnnotation(PackageVersion.class);
System.out.println("Package version: "+version.getPackageVersion());
Run Code Online (Sandbox Code Playgroud)

版画

Package version: 1.2.3
Run Code Online (Sandbox Code Playgroud)

该工具已在JSR-175中添加