Java 为什么它是空的?

Java 为什么它是空的?,java,constructor,Java,Constructor,我知道关键字“this”用于调用另一个构造函数中的构造函数。在下面的代码中,我不理解在如下调用构造函数时为什么使用NULL: this(filename, null); 以下是完整的代码: class Image { Image(String filename) { this(filename, null); System.out.println("Image(String filename) called"); } Image(Str

我知道关键字“this”用于调用另一个构造函数中的构造函数。在下面的代码中,我不理解在如下调用构造函数时为什么使用NULL:

this(filename, null);
以下是完整的代码:

class Image {
    Image(String filename) {
        this(filename, null);
        System.out.println("Image(String filename) called");
    }

    Image(String filename, String imageType) {
        System.out.println("Image(String filename, String imageType) called");
        if (filename != null) {
            System.out.println("reading " + filename);
            if (imageType != null) {
                System.out.println("interpreting " + filename + " as storing a " +
                        imageType + " image");
            }
        }
        // Perform other initialization here.
    }
}

注释中已经提到了这一点,但是您的第一个构造函数不知道图像类型,因此除了
null
之外,它不能合理地传递任何内容。第二个构造函数能够很好地处理该参数的
null
,因此没有由此导致的损坏风险。

因为
imageType
是未知的。如果解决方案解决了您的问题,我们鼓励您接受该解决方案(包括您过去的所有问题)。一个不接受解决方案的用户让我厌烦。非常感谢!!!对于调用另一个构造函数,我们需要传递所有参数,所以我们不在第一个构造函数中输入参数类型,所以为了调用第二个构造函数,我们必须将
null
作为第二个参数传递,否则它将抛出错误