我最近刚开始使用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) {};
}
}
谢谢
答案 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对象。