我是一名试图破解Java项目的C#程序员.这是我们的生产代码中的匿名摘录.它有效(我认为).请注意,这是整个班级.
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) ;
}
}
Run Code Online (Sandbox Code Playgroud)
令我困惑的是 - 在哪里m_Z初始化?我无法在整个代码库中找到它.那么为什么readCustomData和writeCustomData方法都没有失败NullReferenceException- 或者Java中的等价物是什么?被m_Z莫名其妙地自动地沿着构造Y?或者我错过了什么,在代码库中有一些更深层次的魔术来初始化它?
Mic*_*rdt 12
当Java类没有声明构造函数时,编译器会隐式添加一个无参数的构造函数,除了调用超类无参数构造函数之外什么也不做(如果没有这样的构造函数,则会出现编译器错误).
但是,在您的示例中,该字段m_Z将为null.如果对这些方法的调用成功,则必须在其他位置设置该字段.毕竟这是公开的(非常糟糕的做法).
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |