首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >write javaBean error, fastjson version 1.2.47, class

write javaBean error, fastjson version 1.2.47, class

作者头像
johnhuster的分享
发布于 2022-03-28 19:31:58
发布于 2022-03-28 19:31:58
2.6K0
举报
文章被收录于专栏:johnhusterjohnhuster

笔者今天在使用fastjson序列化某个对象(传其他应用传回的数据)时出现了上面的错误提示:

代码语言:javascript
复制
write javaBean error, fastjson version 1.2.47, class  
xxxx
xxxx
Caused by: java.lang.NullPointerException: null

最终发现是该类的某个get方法出现了空指针异常导致了上面的问题,这个就涉及到String类的contentEquals与equals方法的不同了,具体

代码语言:javascript
复制
    public boolean equals(Object anObject) {
         if (this == anObject) {
             return true;
         }
         if (anObject instanceof String) {
             String anotherString = (String)anObject;
             int n = value.length;
             if (n == anotherString.value.length) {
                 char v1[] = value;
                 char v2[] = anotherString.value;
                 int i = 0;
                 while (n-- != 0) {
                     if (v1[i] != v2[i])
                         return false;
                     i++;
                 }
                 return true;
             }
         }
         return false;
     }
    public boolean contentEquals(CharSequence cs) {
         // Argument is a StringBuffer, StringBuilder
         if (cs instanceof AbstractStringBuilder) {
             if (cs instanceof StringBuffer) {
                 synchronized(cs) {
                    return nonSyncContentEquals((AbstractStringBuilder)cs);
                 }
             } else {
                 return nonSyncContentEquals((AbstractStringBuilder)cs);
             }
         }
         // Argument is a String
         if (cs instanceof String) {
             return equals(cs);
         }
         // Argument is a generic CharSequence
         char v1[] = value;
         int n = v1.length;
         if (n != cs.length()) {
             return false;
         }
         for (int i = 0; i < n; i++) {
             if (v1[i] != cs.charAt(i)) {
                 return false;
             }
         }
         return true;
     }

从上面代码可以看出,contentEquals并没有对传入参数进行null值校验,不过笔者这个存储笔误(Eclipse的自动补齐!!)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/08/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档