https://blog.csdn.net/gz_faker/article/details/76647851
从这个文章中可以理解intern。
后续再补充下这个问题的背景。
1、首先创建这个map;
private static Map<String, Channel> map = new ConcurrentHashMap<String, Channel>();
2、因为接收到的是一个32字节的字符数组,比如说deviceid是:64 65 76 69 63 65 30 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(这里是16进制)
byte[] deviceid=new byte[32];
byteBuf.readBytes(deviceid);
3、将这个key和value存入map:
map.put(new String(deviceid),channel值);这里不说具体值;
4、这个时候,使用map.get(key)方法:
比如这个deviceid就是"device01",那么如果我使用 map.get("device01");,获取的是null
那么如果改变呢?
map.put(new String(deviceid).trim().intern,channel值);//这里因为字符数组中会存在0x00的字符,也就是要用trim方法先去掉 这部分的字符,然后再用intern()方法处理,才能等于“device01”这个值。