Shaggy
Shaggy

Reputation: 5830

Pass variable value between two classes in java

I want to access variables sTerminalId & sTransactionId in Class ServerThread

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*/
    }
}

What i tried is

SAXHandler.sTerminalId

Will get me value but only for one run if run it again it gives me previous value. is there any alternative ? i am dealing with sensitive data so dont want to mess my code

Upvotes: 0

Views: 4701

Answers (2)

Rakesh Soni
Rakesh Soni

Reputation: 10907

Reinitialize your variable again before processing... like

public static byte[] ParseXMLToString(String sXMLData) throws Throwable {

     sTerminalId = "";
     sTransactionId = "";

    }

Upvotes: 0

Christoph Walesch
Christoph Walesch

Reputation: 2437

This is why statics are bad. Make the variables instance variables and create a new object instance for each run (let's ignore encapsulation for simplicity):

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*/
    }
}

Upvotes: 5

Related Questions