Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问另一个java文件中的静态类_Java_Static Classes - Fatal编程技术网

访问另一个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

我是否可以访问另一个*.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 {    
     //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;
)。