gpt4 book ai didi

java - Java 中的构造函数是可选的还是什么?

转载 作者:行者123 更新时间:2023-12-02 08:45:40 24 4
gpt4 key购买 nike

我是一名 C# 程序员,正在尝试破解 Java 项目。这是我们生产代码的匿名摘录。它有效(我认为)。请注意,这是整个类(class)。

public class Y extends X
{
public Z m_Z;

protected void readCustomData (CustomStream reader, boolean forUpdate)
throws IOException, FTGException
{
super.readCustomData (reader, forUpdate) ;
m_Z.readBinaryData (reader, forUpdate) ;
}

protected void writeCustomData (CustomStream writer, int original)
throws IOException, FTGException
{
super.writeCustomData (writer, original) ;
m_Z.writeBinaryData (writer, original) ;
}
}

让我困惑的是 - m_Z 是在哪里初始化的?我在整个代码库中找不到它。那么,为什么 readCustomDatawriteCustomData 方法不会因 NullReferenceException 失败 - 或者 Java 中的任何等效项? m_Z 是否以某种方式与 Y 一起自动构建?或者我到底错过了什么并且初始化它的代码库中有一些更深层次的魔力?

最佳答案

当 Java 类没有声明构造函数时,编译器会隐式添加一个无参构造函数,该构造函数除了调用父类(super class)无参构造函数之外什么也不做(如果没有这样的构造函数,将会出现编译器错误)。

但是,在您的示例中,字段m_Z 将为空。如果对这些方法的调用成功,则必须在其他地方设置该字段。毕竟它是公开的(非常糟糕的做法)。

关于java - Java 中的构造函数是可选的还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com