访问另一个java文件中的静态类
我是否可以访问另一个*.java文件中的静态类 我的场景是,我在同一个文件夹中有两个java文件,A.java和B.java:访问另一个java文件中的静态类,java,static-classes,Java,Static Classes,我是否可以访问另一个*.java文件中的静态类 我的场景是,我在同一个文件夹中有两个java文件,A.java和B.java: 在A.java中,它不仅包括类A,还包括静态类C: public class A { public static void main(String[] args) { //code } static class C{ //code } } public class B { //c
在A.java中,它不仅包括类A,还包括静态类C:
public class A {
public static void main(String[] args) {
//code
}
static class C{
//code
}
}
public class B {
//code, use C's methods
}
在B.java中,将使用C类方法:
public class A {
public static void main(String[] args) {
//code
}
static class C{
//code
}
}
public class B {
//code, use C's methods
}
在文件B.java中,我想使用在A.java中声明的类C的方法;但是,即使我将A.java和B.java放在同一个文件夹中,编译器也无法识别C类。我想我不需要导入任何东西,因为两个java文件都在同一个文件夹中,不是吗?有人知道如何解决这个问题吗?谢谢大家! 请注意,class
C
没有访问修饰符,只能在同一个包中看到。澄清一下:子类不会从其封装类继承访问修饰符
如果A
和B
在同一个包中,您可以使用A.C
从B
访问C
。如果您希望C
对A
包之外的类可用,则需要将子类C
公开:
// [...]
// insead of >>static class C {<<
public static class C {
// [...]
/[…]
//插入>>静态类C{只需使用A.C.whatever()
。谢谢!这很有效。我有两个问题:1.我被告知一条规则,一个.java文件中只允许有一个公共类,因为这个公共类必须与java文件的名称相同。所以在一个*.java文件中有两个公共类好吗?2.为什么我不能使用“导入a.C.;”在B.java中而不是你的方法?我只是尝试了一下,但没有成功。但我想知道原因。如果你能告诉我,这会很有帮助。谢谢!不客气。对于第一个问题:每个.class文件(编译的.java文件)都需要一个“根”-使用与文件相同的名称初始化。但是,您可以在此根类中拥有所需的任意多个公共子类。对于第二个问题:这可能与语法稍有不同。您需要使用导入a.C;
而不是导入a.C;
(无以下
)。如果A
在另一个包中,您也需要指定它(例如:import my.package.A.C;
)。