Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Core - Fatal编程技术网

Java 为什么我们不必在引用另一个类之前编译该类

Java 为什么我们不必在引用另一个类之前编译该类,java,core,Java,Core,为什么我们不需要编译我们在我们的类中引用的另一个类,比如eg 有一些源代码编写为 public class b { static { System.out.println("source file"); } } 还有另一个源文件 class a { public static void main(String arr[]) { b x=new b(); } } 当我们编译类a时,它也会自动为b生成类…?为

为什么我们不需要编译我们在我们的类中引用的另一个类,比如eg 有一些源代码编写为

public class b
{
    static
    {
        System.out.println("source file");
    }

}
还有另一个源文件

class a
{
    public static void main(String arr[])
    {
        b x=new b();


    }

}

当我们编译类a时,它也会自动为b生成类…?为什么会这样?

因为否则你就无法编译类之间存在循环依赖关系的程序,比如

public class Parent {
    Child[] children;
}

public class Child {
    Parent parent;
}

这会很烦人,不是吗?

因为否则您无法编译类之间具有循环依赖关系的程序,例如

public class Parent {
    Child[] children;
}

public class Child {
    Parent parent;
}

这会很烦人,不是吗?

这只是一个
javac
实现细节,旨在简化您的生活。就我个人而言,我更喜欢显式地指定我想要编译的所有源文件。因为编译器就是这样工作的?它可以在同一个编译单元中找到东西。java编译器检查根层次结构,所以我们不需要先编译类…?java C将自动编译编译类编译时所依赖的所有类(从源代码向下)。它既方便又避免了@meriton提到的循环。它只是一个
javac
实现细节,旨在简化您的生活。就我个人而言,我更喜欢显式地指定我想要编译的所有源文件。因为编译器就是这样工作的?它可以在同一个编译单元中找到东西。java编译器检查根层次结构,所以我们不需要先编译类…?java C将自动编译编译类编译时所依赖的所有类(从源代码向下)。这既方便又避免了@meriton提到的循环性。有趣的是,这是必要的,因为与大多数其他语言不同,Java没有单独的定义(.h、.def等)和实现(.c、.mod等)文件。有趣的是,这是必要的,因为与大多数其他语言不同,Java没有单独的定义(.h、.def等)和实现(.c、.mod等)文件。