是否可以编写一个在包级别可用的方法?假设foo
是一个包:
long version = foo.getPackageVersion();
答案 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中,方法/操作应该在类中。如果您尝试在课外添加方法,则编译器会抱怨。