解释下代码 protected Dictionary<string, Action> ActionDictionary = new Dictionary<string, Action>();
时间: 2024-05-31 22:10:08 浏览: 19
这段代码定义了一个名为 ActionDictionary 的字典类型的变量,并指定了其键值类型为 string,值类型为 Action。这个字典里存储了一些键值对,其中键为字符串类型,值为委托类型 Action。这个字典可以被用来实现一个命令模式,在程序运行时可以根据不同的命令字符串执行对应的委托函数。
相关问题
protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { List<String> valueList = new LinkedList<String>(什么意思
?这是一个Hadoop MapReduce程序中的reduce函数的定义,其功能将相同的key所对应的value集合进行归并,生成最终输出结果。其中,reduce函数的输入参数包括key值和一个value的Iterable集合,输出结果通过Context对象进行输出。在具体实现中,需要进行异常处理和遍历集合中的元素。
存在private ThreadLocal<String> languageHolder = new ThreadLocal<>();里面的数据,为什么取的时候是空的
ThreadLocal 是一种多线程并发访问变量的方式,它可以为每一个线程提供一个独立的变量副本,保证每个线程对变量的操作互不干扰。在使用 ThreadLocal 时,每个线程都会有一个独立的变量副本,这个变量副本的初始值为 null。因此,当你取出 languageHolder 变量时,如果没有在当前线程中设置过它的值,那么它的值就是 null。
如果你想在使用 ThreadLocal 时保证每个线程都有初始值,可以通过重写 ThreadLocal 的 initialValue() 方法来实现。例如:
```
private ThreadLocal<String> languageHolder = new ThreadLocal<String>() {
@Override
protected String initialValue() {
return "en";
}
};
```
这样,如果当前线程没有设置过 languageHolder 变量的值,那么它的值就会默认为 "en"。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
package ece448.iot_sim; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ece448.iot_sim.http_server.RequestHandler; public class HTTPCommands implements RequestHandler { // Use a map so we can search plugs by name. private final TreeMap<String, PlugSim> plugs = new TreeMap<>(); public HTTPCommands(List plugs) { for (PlugSim plug: plugs) { this.plugs.put(plug.getName(), plug); } } @Override public String handleGet(String path, Map<String, String> params) { // list all: / // do switch: /plugName?action=on|off|toggle // just report: /plugName logger.info("HTTPCmd {}: {}", path, params); if (path.equals("/")) { return listPlugs(); } PlugSim plug = plugs.get(path.substring(1)); if (plug == null) return null; // no such plug String action = params.get("action"); if (action == null) return report(plug); // P2: add your code here, modify the next line if necessary if("toggle".equals(action)){ plug.toggle(); return report(plug); }else if("on".equals(action)){ plug.switchOn(); return report(plug); }else if("off".equals(action)){ plug.switchOff(); return report(plug); } return "<html><body></body></html>"; } protected String listPlugs() { StringBuilder sb = new StringBuilder(); sb.append("<html><body>"); for (String plugName: plugs.keySet()) { sb.append(String.format("%s", plugName, plugName)); } sb.append("</body></html>"); return sb.toString(); } protected String report(PlugSim plug) { String name = plug.getName(); return String.format("<html><body>" +"Plug %s is %s." +"Power reading is %.3f." +"Switch On" +"Switch Off" +"Toggle" +"</body></html>", name, plug.isOn()? "on": "off", plug.getPower(), name, name, name); }如何对上述代码全部功能进行测试呢?请提供测试代码。
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)