java - java中两个类之间传递变量值

标签 java

我想访问ServerThread类中的变量sTerminalIdsTransactionId

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/

相关文章:

java - netty中ChannelBuffer.copy()和ChannelBuffer.duplicate()有什么区别

java - RxJava 条件中断链

java - Gradle命令行错误,任务 ':..:jar'的执行失败

java - 线程安全重构

java - 基于系统属性在 Spring Boot 应用程序中设置配置文件

java - JTable AutoCreateRowSorter 将数字排序为字符串

java.sql.SQLException : Unknown initial character set index '255' received from server for connector 8. 0.11

java - 在java中匹配 "."

java - 在 Java 中将音频从 44.1kHz 下采样到 16kHz

Java 文档字符串通过类中的私有(private)变量