if (Objects.equals(topicArr[0], "IOT")){ if (Objects.equals(topicArr[3], "state")) { re_state.put(topicArr[2], topicArr[4]); }else if (Objects.equals(topicArr[3], "sensorTag")) { String a = "1"; // Device cmds = JSON.toJavaObject((JSON) JSON.parse(_msg), Device.class); // String address = ApiController.getAddress(cmds.getLocation())[0]; // address = address.substring(0, address.length() - 1); // Deviceupdate cmd = JSON.toJavaObject((JSON) JSON.parse(_msg), Deviceupdate.class); // cmds.setLocation(address); // cmd.setLocation(address); // Location location = new Location(); // location.setLocation(cmds.getLocation()); // location.setId(cmds.getId()); // cmds.setRecordTime(new Date()); // cmd.setRecordTime(cmds.getRecordTime()); // if (deviceupdateService.selectDeviceupdateById(cmds.getId()) == null) { // //向Mysql添加设备信息 // deviceService.insertDevice(cmds); // deviceupdateService.insertDeviceupdate(cmd); // locationService.insertLocation(location); // //向redis添加设备信息 // redisTemplate.opsForValue().set(cmds.getId(), _msg); // // System.out.println("数据存放成功"); // } else { // locationService.updateLocation(location); // //向redis添加设备信息 // redisTemplate.opsForValue().set(cmds.getId(), _msg); // //向Mysql添加设备信息 // deviceService.insertDevice(cmds); // deviceupdateService.updateDeviceupdate(cmd); // // System.out.println("更新完成"); // System.out.println(cmds); // } }else if (Objects.equals(topicArr[3], "test")){ }
时间: 2024-02-14 12:23:43 浏览: 118
这段代码看起来像是Java代码,它是用来处理MQTT消息的。其中,它根据消息中的主题和内容来判断消息的类型,然后执行不同的操作。针对不同的主题,代码中的逻辑分别为:
- 如果主题的第一个参数是"IOT",且第四个参数是"state",则将第三个参数和第五个参数存入名为re_state的Map中。
- 如果主题的第一个参数是"IOT",且第四个参数是"sensorTag",则将消息解析成Device和Deviceupdate对象,并将它们插入到MySQL数据库和Redis缓存中。
- 如果主题的第一个参数是"IOT",且第四个参数是"test",则不执行任何操作。
这段代码的具体实现可能需要结合其他代码来看,才能更好地理解它的作用。
相关问题
if(!Objects.equals(equipment.getJinLiaoSpeed(), strFs)){
这段代码使用了Java的`Objects.equals`方法来比较两个对象是否相等。具体解释如下:
```java
if(!Objects.equals(equipment.getJinLiaoSpeed(), strFs)){
// 逻辑处理
}
```
### 解释
1. **`Objects.equals`方法**:
- `Objects.equals(a, b)`方法用于比较两个对象`a`和`b`是否相等。它会处理`null`值的情况,避免了直接使用`==`或`!=`操作符可能带来的空指针异常(NullPointerException)。
- 如果两个对象都为`null`,则返回`true`。
- 如果其中一个对象为`null`,则返回`false`。
- 否则,调用对象的`equals`方法进行比较。
2. **`!Objects.equals(a, b)`**:
- 这部分代码的含义是如果`a`和`b`不相等,则条件为`true`。
- 在这个例子中,`equipment.getJinLiaoSpeed()`和`strFs`不相等时,`if`语句块中的逻辑会被执行。
### 示例
假设`equipment.getJinLiaoSpeed()`返回的是一个`Integer`对象,`strFs`是一个`String`对象:
```java
Integer jinLiaoSpeed = equipment.getJinLiaoSpeed();
String strFs = "100";
if(!Objects.equals(jinLiaoSpeed, strFs)){
// 逻辑处理
}
```
在这个例子中,`jinLiaoSpeed`是`Integer`类型,`strFs`是`String`类型,`Objects.equals`会返回`false`,因为它们的类型不同,`if`语句块中的逻辑会被执行。
### 建议
如果`equipment.getJinLiaoSpeed()`和`strFs`的类型相同(例如都是`Integer`或都是`String`),你可以直接使用`!a.equals(b)`进行比较:
```java
if(!equipment.getJinLiaoSpeed().equals(strFs)){
// 逻辑处理
}
```
但是,为了避免空指针异常,建议使用`Objects.equals`方法。
阅读全文
相关推荐

















