使用Java(上周最新),我试图调用一个我存储在hashmap中的线程的方法。我想要这样做的原因(将线程存储在地图与列表中)是我可能想要从多个地方调用该线程的方法,并且不希望将数据存储在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
错误。为什么呢?
答案 0 :(得分:2)
尝试:
((MonitorThread) threads.get("monitor")).SendAlert();
相反。 .
运算符的操作顺序高于强制转换。
此外,正如@MarcoAcierno在下面的评论中指出的那样,如果您不小心,可以获得ClassCastException
,因此您可以:
if(threads.get("monitor") instanceof MonitorThread) ((MonitorThread) threads.get("monitor")).SendAlert();