【发布时间】:2012-08-08 19:43:51
【问题描述】:
我想知道是否有办法从另一个以包私有类作为参数的包中调用静态方法?这是将 MessagePackagePrivate 类移动到另一个 .java 文件并将其公开的唯一方法吗?如果我不这样做,它会给出这个错误:“MessagePackagePrivate 类型不可见”,这是正常的。
那么,如果是这样的话,即使你的类公开了一个要公开使用的静态方法,如果它不在同一个包中调用,就不能使用该类?
这里是sn-p的代码:
MainClass.java
package packageA;
import packageB.*;
public class MainClass {
public static void main(String[] args) {
ClassB.printString(new MessagePackagePrivate("Package problem"), 12);
}
}
ClassB.java
package packageB;
public class ClassB {
public static void printString( MessagePackagePrivate message , int numbers) {
System.out.println(message.getMessage() + " numbers: " + numbers );
// other logics will be implemented here ...
}
}
class MessagePackagePrivate {
private String text;
MessagePackagePrivate(String text) {
this.text = text;
}
public String getMessage() {
return this.text;
}
}
【问题讨论】:
-
应该注意
pacenter code herekageA不是一个有效的包名。而是pacenter.code.herekageA。 -
您的 MessagePackagePrivate 是默认类。默认类不能被自身以外的其他包引用
-
@Sikorski:这不是默认类。这是一个嵌套类。它在包
packageB中。与此包中的其他类相比,它具有不同的可见性。 -
@Makoto 我和 Sikorski 在一起,它不是内部类,它的默认值,一个 java 文件中的两个类。
-
@Makoto 第一次我也认为那是一个内部类,但仔细查看文件,大括号和问题 Op 说,当他将类移动到另一个 java 文件中时,它可以工作,我不要以为你会用嵌套类来做某事
标签: java package static-methods package-private