使用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/