在类之间传递变量-Java

时间:2018-11-22 12:09:19

标签: java

我最近刚开始使用Java。我在一类中有一个变量,而我想在另一类中使用。我知道这是非常基本的,但是如果有人可以帮忙...。

这是类,变量是值

public class MainApp {
.
.
.

public static  class AnalogSampleListener implements IIOSampleReceiveListener {
    @Override
    public void ioSampleReceived(RemoteXBeeDevice remoteDevice, IOSample ioSample) {
        for (IOLine line : LINES) {
            if (ioSample.hasAnalogValue(line)) {
                int ***value*** = ioSample.getAnalogValue(line);

                System.out.println(new Timestamp(System.currentTimeMillis()) + " " + "Analog data from '" + remoteDevice.get64BitAddress() + 
                        "': " + value);

     }
  }
.
.
}

我想将变量值发送给此类:

public class RandomWave implements Runnable{

.
.
.

public void run()
{
    long currentTime = 0;
    long nextTime = 0;

    // Variable to keep track of the timing
    long timer = System.nanoTime();

    while (!stopThread)
    {
        // Compute the next data value
        currentTime = (System.nanoTime() - timer) / 1000000;

        double p = currentTime / 1000.0 * 4;
        double series0 = ***HERE I NEED THE VARIABLE VALUE***;
        double series1 = 210 + 60 * Math.sin(p / 21.7) * Math.sin(p / 7.8);

        // Call the handler
        handler.onData(currentTime / 1000.0, series0, series1);

        // Sleep until next walk
        if ((nextTime += interval) <= currentTime)
            nextTime = currentTime + interval;

        try { Thread.sleep((int)(nextTime - currentTime)); }
        catch (InterruptedException e) {};
    }
}

谢谢

2 个答案:

答案 0 :(得分:0)

您需要为此变量编写一个getter方法。作为示例,我将使用名为“ myString”的字符串来完成此操作。

public String getMyString(){
  return myString;
}

现在您可以创建另一个类的实例,调用此方法以获取值:

MyClass c = new MyClass();
String valueFromTheOtherClass = c.getMyString();

我希望我理解你是对的问题...

答案 1 :(得分:0)

值是一个局部变量,在“ ioSampleReceived”完成后不存在。

但是我喜欢做一个非常笼统的解释。如果需要从另一个类读取值,则可以将其设置为“ public static”。静态表示此变量并非针对每个对象实例都存在。只有一个。生活在阶级中,而不是在对象中。其他一些类访问此值非常简单。只需调用“ ClassA.value”即可。但是请注意,如果并行执行代码,则会出现多线程问题。

如果您具有非静态值,则会变得更加复杂。有许多ClassA和ClassB实例需要告知必须使用哪个ClassA对象实例。也许在ClassB的构造函数中包含ClassA的实例。这也属于“依赖注入”主题。框架可以为您提供帮助,但毕竟,在ClassB可以读取ClassA的任何值之前,您需要向ClassB告知ClassA对象。