Q) With respect to accessing static content, what is the difference between user defined package and java system package (say java.lang etc)
我正在准备ocjp6。使用1.6.26 java版本
我的java程序在PackageTest.java中有一个名为“pack”的包
package pack;
public class PackageTest {
public static final int i=20;
}
}
javac -d . PackageTest.java
在 pack 文件夹中创建 PackageTest.class 文件
现在从另一个java访问PackageTest类的静态内容
程序(TestStaticContents.java)如下
import pack.PackageTest.*;
// here importing all contents of PackageTest class
class TestStaticContents {
public static void main(String[] args){
System.out.println("normal import, accessing i value with class name: "+PackageTest.i);
}
}
javac TestStaticContent.java
显示编译错误:
TestStaticContents.java: cannot access PackageTest bad class file: .\PackageTest.java
如果我尝试从我的 java 程序访问 Math 类的静态内容 它没有显示任何编译错误,即
import java.lang.Math.*;
// here importing all contents of Math class
class TestMathStaticContents {
public static void main(String[] args){
System.out.println("normal import, accessing pi value with class name : "+ Math.PI);
}
}
javac TestMathStaticContents.java
没有编译错误,并且 PI 值按预期打印。
为什么此行为与用户定义的包不同?
最佳答案
我相信我现在明白你的问题了。您已将 PackageTest.java
和 TestStaticComponents.java
放置在同一个包 pack
中。共享同一个包的两个类不能显式地相互导入。
您已经通过向 TestStaticComponents.java
提供包私有(private)类标识符来暗示了这一点。
如果两个类驻留在不同的包中,您的导入语句将完美运行。
关于java - 用户定义的包和系统定义的java包在访问静态内容方面有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43336138/