Java成员变量的数据类型改变后可能引发的问题
类型改变,如 Integer 改为 String 或 Integer 改为 Long。
if (xxx.equals(Object obj))
当成员变量的数据类型改变后,直接量与成员变量比较时,比较结果可能和之前的结果不同。如:
new Integer(1).equals(new Long(1)) // 返回 false |
发生错误的场景,如:
Integer type1 = 1; |
解决方法:与该成员变量的比较的值,数据类型要保持一致。
map.get(Object key)
若该变量作为 map 的 key 时,可能出现新的数据类型在 map 中找不到对应的 key。
HashMap put(key, value) 方法有指定数据类型的约束,而 get(Object key) 方法没有对应的数据类型约束。字段类型改变后,put 方法有错误提示,而 get 方法没有提示。在 map 对象中不同的数据类型的 key 是不同的 key,从而会出现改完数据类型后找不到对应的 key。
Map<Integer, String> map = new HashMap() |
解决方法:put(key, value) 和 get(Object key) 的 key 的数据类型要保持一致。
方法的重载
若该变量作为方法的参数时,存在多个重载方法,改完类型后,可能调用的不是之前的方法。如存在重载方法 getById(Integer id) 和 getById(Serializable id)。
解决方法:检查该成员变量作为参数调用方法的地方,跳转的方法是不是之前的方法。