我正在为一家金融公司提供后端服务。该应用程序是使用 jpos、spring 3.0.5、hibernate 3.6 构建的。该应用程序将在由 jpos 负责的多线程环境中运行。然而,我对应该使用哪种策略来定义一个可以在整个应用程序中访问其属性和数据成员的类感到困惑。
到目前为止我所做的是:
public class MsgHandler
{
public Boolean isOffline = true;
public Boolean isSuccess;
public Long mobileTxnId;
setAllData()
{
mobileTxnId=1000;
..............
}
}
在这门课中,我基本上放置了在整个过程中经常使用的所有必要数据。所以我扩展了 MsgHandler
public class A extends MsgHandler
{
setAllData();
System.out.println("Mobile Txn Id: "+mobileTxnId) //its printing the values here
B b=new B();
b.useData();
}
现在另一个B类也在扩展MsgHandler类,但在B类中我没有获得在A类中设置的mobileTxnId的null值
public class B extends MsgHandler
{
useData()
{
System.out.println("Mobile Txn Id: "+mobileTxnId) //its not printing the values here
}
}
为什么会发生这种情况,因为我正在扩展同一个类,但在 A 类中,我得到 mobileTxnId 但在 B 类中,我得到 mobileTxnId 为空值。
将 mobileTxnId 设为静态是一个很好的做法,即使应用程序要在多线程环境中使用,请建议我
最佳答案
a
和 b
是不同相同的对象,因此在 a 上调用
对象构造函数也不在 setAllData()
b
对象构造函数中进行调用。
您需要调用
b.setAllData()
使用前
b.useData()
关于java - 当一个类被另外两个类扩展时获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16523454/