使用Java(上周最新),我试图调用存储在哈希图中的线程方法。我要这样做(将线程存储在地图或列表中)的原因是,我可能想从多个位置调用该线程的方法,并且不想将数据存储在MonitorThread的静态变量中,从而能够这样做。

private HashMap<String, Thread> threads = new HashMap<String, Thread>();

MonitorThread t = new MonitorThread();
t.start();
threads.put("monitor", t);

(MonitorThread)(threads.get("monitor")).SendAlert();


我在最后一行收到cannot resolve SendAlert错误。为什么?

最佳答案

尝试:

((MonitorThread) threads.get("monitor")).SendAlert();


代替。 .运算符在操作顺序上高于强制转换。

另外,正如@MarcoAcierno在下面的注释中指出的那样,如果您不小心,也可以得到ClassCastException,因此您可以:

if(threads.get("monitor") instanceof MonitorThread) ((MonitorThread) threads.get("monitor")).SendAlert();

关于java - ID存储在 map 中的线程的运行方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24191195/

10-11 21:37