4

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

long version = foo.getPackageVersion();
4

4 回答 4

6

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

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

于 2012-08-15T21:16:39.263 回答
6

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

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

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中添加的

于 2012-08-15T21:18:33.980 回答
0

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

于 2012-08-15T21:17:26.207 回答
0

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

于 2012-08-15T21:17:44.570 回答