包级别的方法

时间:2012-08-15 21:15:43

标签: java packages

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

long version = foo.getPackageVersion();

4 个答案:

答案 0 :(得分:6)

不,不是。方法只能在类上定义。其他地方。

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

答案 1 :(得分:6)

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

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

在包package-info.java

中名为mypackage的文件中
/**
 * Javadoc comments for package {@code mypackage}.
 */
@PackageVersion(getPackageVersion = "1.2.3")
package mypackage;

@Retention(RetentionPolicy.RUNTIME)
public @interface PackageVersion {
    String getPackageVersion();
}

Package mypackage = Package.getPackage("mypackage");
PackageVersion version = mypackage.getAnnotation(PackageVersion.class);
System.out.println("Package version: "+version.getPackageVersion());

打印

Package version: 1.2.3

此工具已添加到JSR-175

答案 2 :(得分:0)

没有。包本身既不是对象也不是类。只有类有方法。

答案 3 :(得分:0)

在Java中,方法/操作应该在类中。如果您尝试在课外添加方法,则编译器会抱怨。