gpt4 book ai didi

Java:数组在类之间传输,但值却不能?

转载 作者:行者123 更新时间:2023-12-01 18:57:51 26 4
gpt4 key购买 nike

在下面的 Java 代码中,我在一个类中填充 ArrayList,然后在另一个类中使用该 ArrayList。然而,数组传输但填充了空值。我已经调试了代码,ArrayList 确实被填充,但它的值没有传输。

头等舱:

public String[] log = new String[100];
public ArrayList llog= new ArrayList();
int arraypos= 0;
public void nativeKeyPressed(NativeKeyEvent e) {
if (e.getKeyCode() == NativeKeyEvent.VK_ESCAPE) {
GlobalScreen.unregisterNativeHook();
}
System.out.println(" " + NativeKeyEvent.getKeyText(e.getKeyCode()).toLowerCase() + " ");
llog.add(NativeKeyEvent.getKeyText(e.getKeyCode()).toString().toLowerCase());
System.out.println("list:" + llog.get(arraypos));
arraypos = arraypos + 1;
}

public ArrayList getStrokes (){
return this.llog;
}

二等:

public void TeslaTimer()
{
int delay = 10000; //1 sec = 1000
int period = 90000; // repeat every sec.

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
GlobalKeyListener keyl = new GlobalKeyListener();
ArrayList keylog=keyl.getStrokes();

//TeslaLogger savetoFile = new TeslaLogger();
//savetoFile.TeslaLogger(keylog);
System.out.println("Ring Ring");
for(int i =0; i < keylog.size(); i++){
System.out.println(keylog.get(i));
}
}
}, delay, period);
}

最佳答案

GlobalKeyListener的实例在TeslaTimer与您要添加的实例不同 - 它们是不同的对象,每个对象都有自己的列表。

您必须创建 GlobalKeyListener 的相同实例可供您的 run()方法,或者使用 static变量(类似于全局变量)。

<小时/>

这是Singleton pattern您可以使用它来使其工作的实际操作:

public class GlobalKeyListener {

// rest of class omitted
private static GlobalKeyListener INSTANCE = new GlobalKeyListener();

public static GlobalKeyListener getInstance() {
return INSTANCE;
}

}

然后无论您需要在本地使用它:

GlobalKeyListener globalKeyListener = GlobalKeyListener.getInstance();
globalKeyListener.getStrokes(); // etc

所有代码都将使用相同实例。

关于Java:数组在类之间传输,但值却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com