API使用的注意事项
2015-10-13 17:26
549 查看
在日常编码中,我们习惯性会使用JDK所提供的api,在使用的同时需要避免API的错误用法,否则就会把你绕坑里了。
一下这些场景是最近工作中遇到过的一些比较坑爹的问题。
场景1:equals的用法
许多对象都提供了这个方法 boolean equals(Object anObject)
先看以下代码:
代码中可能存在问题:若此方法入参name为NULL,则在运行期间会抛出空指针异常
这个方法通常用来比较两个同数据类型的对象是否相同 若明确一个对象不为空,则建议写如下代码
ObejctOne.equals(ObjectTwo);
若ObjectOne为NULL,则代码在运行时就会抛出空指针,而相对来说,若One不为空,而Two为空的话,则不会报错
强调一下使用equals的时候 必须保证两个对象类型一致,我在编码中发现,将一个String和一个int去equals 编译没错的 但永远都是false
如下:
场景2:String.ValueOf()的用法
将数据类型强制转换成String类型
代码:
代码中可能存在问题:入参name为NULL,则判空结果result为false。
原因是使用 String.valueOf() 进行数据转换,如果被转换的数据为 null, 则这种方法将返回一个 "null"字符串
为了避免以上的问题,建议编码的时候使用 org.apache.commons.lang.ObjectUtils提供的
持续更新!
一下这些场景是最近工作中遇到过的一些比较坑爹的问题。
场景1:equals的用法
许多对象都提供了这个方法 boolean equals(Object anObject)
先看以下代码:
public void functionOne(String name){ boolean checkResult = name.equals("xxx"); }
代码中可能存在问题:若此方法入参name为NULL,则在运行期间会抛出空指针异常
这个方法通常用来比较两个同数据类型的对象是否相同 若明确一个对象不为空,则建议写如下代码
ObejctOne.equals(ObjectTwo);
若ObjectOne为NULL,则代码在运行时就会抛出空指针,而相对来说,若One不为空,而Two为空的话,则不会报错
强调一下使用equals的时候 必须保证两个对象类型一致,我在编码中发现,将一个String和一个int去equals 编译没错的 但永远都是false
如下:
String compareString = "12345"; boolean compareResult = compareString.equals(12345);
场景2:String.ValueOf()的用法
将数据类型强制转换成String类型
代码:
public void functionTwo(String name){ String result = StringUtil.isBlank(String.valueOf(name)); }
代码中可能存在问题:入参name为NULL,则判空结果result为false。
原因是使用 String.valueOf() 进行数据转换,如果被转换的数据为 null, 则这种方法将返回一个 "null"字符串
为了避免以上的问题,建议编码的时候使用 org.apache.commons.lang.ObjectUtils提供的
public static String toString(Object obj, String nullStr) { return obj == null ? nullStr : obj.toString(); } public void functionTwo(String name){ String result = StringUtil.isBlank(ObjectUtils.toString(name, StringUtils.EMPTY)); }
持续更新!
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Manifest 用法
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Spark RDD API详解(一) Map和Reduce
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序