我想访问ServerThread
类中的变量sTerminalId
和sTransactionId
public class ServerThread extends Thread {
/* Some Code Omitted Here */
public void run() {
String sDataFromPOS="";
//Get Some Value in sDataFromPOS
byte[] bSendToPOS = SAXHandler.ParseXMLToString(sDataFromPOS.toString().substring(2));
}
}
public class SAXHandler extends DefaultHandler {
static String sTerminalId = "";
static String sTransactionId = "";
public static byte[] ParseXMLToString(String sXMLData) throws Throwable {
/* Do Some Operation on String sXMLData & extarct value of sTerminalId & sTransactionId*/
}
}
我尝试的是
SAXHandler.sTerminalId
会给我带来值(value),但仅限一次运行,如果再次运行它,它会给我以前的值(value)。 还有其他选择吗?我正在处理敏感数据,所以不想弄乱我的代码
最佳答案
这就是静力学不好的原因。将变量设置为实例变量并为每次运行创建一个新的对象实例(为了简单起见,让我们忽略封装):
public class ServerThread extends Thread {
public void run() {
String sDataFromPOS="";
//Get Some Value in sDataFromPOS
SAXHandler handler = new SAXHandler();
byte[] bSendToPOS = handler.parseXMLToString(sDataFromPOS.toString().substring(2));
handler.sTerminalId .... // access instance variables
}
}
public class SAXHandler extends DefaultHandler {
String sTerminalId = "";
String sTransactionId = "";
public byte[] parseXMLToString(String sXMLData) throws Throwable {
/* Do Some Operation on String sXMLData & extarct value of sTerminalId & sTransactionId*/
}
}
关于java - java中两个类之间传递变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509397/