是否可以编写在包级别可用的方法?假设foo
是一个包:
long version = foo.getPackageVersion();
不它不是。方法只能在类上定义。无处。
包不是物理的,它不能作为字节码的容器。包不过是类、枚举和接口的命名空间。
理论上你可以在 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中添加的
不,包本身既不是对象也不是类。只有类有方法。
在 Java 中,方法/操作应该在类中。如果您尝试在类外添加方法,编译器会报错。