- 基础代码,两个基础PO 有同样属性,但是类型不一致。拷贝时而成功,时而失败
public class LongPO {
public long id;
}
public class StringPO {
public String id;
}
LongPO longPO = new LongPO();
StringPO stringPO = new StringPO();
BeanUtil.copyProperties(stringPO,longPO);
LongPO longPO = new LongPO();
StringPO stringPO = new StringPO();
stringPO.setId("121hdiaut");
BeanUtil.copyProperties(stringPO,longPO);
LongPO longPO = new LongPO();
StringPO stringPO = new StringPO();
stringPO.setId("hdiaut121");
BeanUtil.copyProperties(stringPO,longPO);
- 原因 cn.hutool.core.util.NumberUtil 在捕获异常后又进行了处理所以导致如果是字符串开头的直接转换异常,如果是数字开头的则返回可以截取的数字
public static long parseLong(String number) {
if (StrUtil.isBlank(number)) {
return 0L;
}
if (number.startsWith("0x")) {
return Long.parseLong(number.substring(2), 16);
}
try {
return Long.parseLong(number);
} catch (NumberFormatException e) {
return parseNumber(number).longValue();
}
}