1. 程式人生 > >Android 判斷一個物件屬性是否有null的值

Android 判斷一個物件屬性是否有null的值

場景:在通過Gson或者FastGson解析資料成功後,在使用一個物件的時候,比如在使用者中心介面有幾個屬性,姓名,年齡,個人介紹,當我們在使用其中的一個屬性的時候,如果這個屬性剛好伺服器沒有賦值,讀取的是一個null,有可能導致應用的崩潰或者是在介面顯示一個null,那麼此時的你是不是想有沒有一種想,通過一種方法來一下子判斷出裡面的屬性有沒有一個是null的或者是空的,而不是當發現是null值的時候才會怒氣衝衝的找到伺服器開發人員,(友誼萬歲 笑臉)。

好吧,是時候展示真正的實力了。

public class BeanUtils1 {
    public static String checkFieldValueNull(Object bean) {
        StringBuffer sb=new StringBuffer();
        sb.append("");
        if (bean == null) {
            return sb.toString();
        }
        sb.append(bean.getClass().getName()+"  以下屬性為空 ");
        Class<?> cls = bean.getClass();
        Method[] methods = cls.getDeclaredMethods();
        Field[] fields = cls.getDeclaredFields();

        for (Field field : fields) {
            try {
                String fieldGetName = parGetName(field.getName());
                if (!checkGetMet(methods, fieldGetName)) {
                    continue;
                }
                Method fieldGetMet = cls.getMethod(fieldGetName, new Class[]{});
                Object fieldVal = fieldGetMet.invoke(bean, new Object[]{});
                if (fieldVal != null) {
                    if ("".equals(fieldVal)) {
                        sb.append(fieldGetMet.getName().toString()+",");
                    }
                }else{
                    sb.append( fieldGetMet.getName().toString()+",");
                }
            } catch (Exception e) {
                continue;
            }
        }
        return sb.toString();
    }


    /**
     * 拼接某屬性的 get方法
     *
     * @param fieldName
     * @return String
     */
    public static String parGetName(String fieldName) {
        if (null == fieldName || "".equals(fieldName)) {
            return null;
        }
        int startIndex = 0;
        if (fieldName.charAt(0) == '_'){
            startIndex = 1;
        }
        return "get"
                + fieldName.substring(startIndex, startIndex + 1).toUpperCase()
                + fieldName.substring(startIndex + 1);
    }

    /**
     * 判斷是否存在某屬性的 get方法
     *
     * @param methods
     * @param fieldGetMet
     * @return boolean
     */
    public static boolean checkGetMet(Method[] methods, String fieldGetMet) {
        for (Method met : methods) {
            if (fieldGetMet.equals(met.getName())) {
                return true;
            }
        }
        return false;
    }

}
多做總結,提升自我,加油

相關推薦

Android 判斷一個物件屬性是否null

場景:在通過Gson或者FastGson解析資料成功後,在使用一個物件的時候,比如在使用者中心介面有幾個屬性,姓名,年齡,個人介紹,當我們在使用其中的一個屬性的時候,如果這個屬性剛好伺服器沒有賦值,讀取的是一個null,有可能導致應用的崩潰或者是在介面顯示一個null,那麼此

Java判斷一個物件屬性是否為空

就是在服務端在返回資料結構時,有些欄位有時返回有時不返回(根據欄位值來決定);但客戶端會用到這些欄位當沒有返回時就會報空指標異常。 解決方法: for (Field f : obj.

Java陣列反射實現動態的判斷一個物件是陣列,並且對陣列進行拆包輸出 。。

  package me.test; import java.lang.reflect.Array; public class ArrayReflect {  public static void m

判斷一個物件裡面的屬性是否為null

public static boolean allFieldIsNULL(Object o){ //Object o = new Object(); //TODO o表示一個物件 try { for (Field field : o.getClass(

java中,只宣告一個物件不賦,與宣告一個物件並賦為null啥區別?

轉自:http://www.oschina.net/question/557858_127408 http://zhidao.baidu.com/link?url=rp_hAuPys2vMPnir0t7IFccKVnwEm8zHI7-wEoBSJXw05SAmKHGOObT

判斷一個物件是不是陣列,幾種辦法?

這是一個出現過無數次的話題,這裡再次重寫僅作為個人的學習筆記,謝謝觀看。 0、typeof typeof 運算子的主要作用就是用來檢測資料的型別,一般情況下我們都是使用它來判斷資料型別,但是這裡,我把typeof 放在0的位置,因為 typeof 不能檢

如何判斷一個單鏈表是否環?

算法 查找 public class LinkedListRing{ static class LinkedNode<T>{ private T t ; private LinkedNode<T> next = null; public LinkedNode(T t)

判斷一個函數是否參數傳遞進來

arguments 參數個數判斷一個函數是否有參數傳遞進來第一種方法:第二種方法:判斷一個函數是否有參數傳遞進來

從javascript判斷一個物件是否為陣列中學習js語法

1,真正的陣列的判斷方法 javascript中最簡單的宣告陣列方法為: var a = []; 判斷是否為陣列的最直接的方法為: a instanceof Array //true a .constructor == Array //true 這裡涉及到一個i

面試題:判斷一個物件是不是陣列型別

<script> //判斷一個物件是不是陣列型別 typeof不能檢視所有型別 var obj1={x:1,y:2}, obj2=[1,2,3], obj3=new Date(); //1.判斷爹(原型物件)

面試題-如何判斷一個物件是不是陣列型別

在前端面試中,我們經常會被問道,如何判斷一個物件是不是陣列型別,下面就這一點展開詳細的描述,並總結一下共有幾種方法。 1.我們首先回顧一下typeof操作符的用法 操作符可以用來檢測給定變數的資料型別,返回的值有以下幾種:undefined,boolean,string,number,object,f

如何判斷一個物件是否為jquery物件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

如何判斷一個物件例項是不是某個型別,如Cat型別

<script> function cat(){} var b = new cat(); if(b instanceof cat){ console.log("a是cat") } if(b.constructor==cat){

判斷一個物件是不是一個數組

判斷一個物件是不是一個數組的方法: 1.驗證原型物件 如果一個物件的原型物件是Array.prototype Object.getPrototypeOf(obj)==Array.prototype var bool=father.isPrototypeOf(child) var obj

Js中如何判斷一個物件為陣列型別

在說明如何判斷一個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別:number、string、object、Boolean、null、undefined。 string: 由單引號或雙引號來說明,如"string"; number:陣列型別,比如整數、小數等; Boolea

js 判斷一個物件是否為空方法總結

通常情況下,工作中寫邏輯的時候都會用到判斷一個物件是否為空的方法,巧的是今天正好有人問我這個問題,我竟然沒回答上來,很尷尬,決定研究一下總結下來,之前研究過但是久了不用就生疏了!大意啊 1.將json物件轉化為json字串,再判斷該字串是否為"{}" var data = {};

如何判斷一個物件是不是陣列、

如何判斷一個物件是不是陣列?是一個比較常見的問題。我總結鏈四種方法,如下。 The First method Array.prototype.isPrototypeOf(obj)    // 判斷A

演算法之(二)判斷一個單鏈表是否

思路:如果一個單鏈表中有環,用一個指標去遍歷,永遠不會結束,所以可以用兩個指標,一個指標一次走一步,另一個指標一次走兩步,如果存在環,則這兩個指標會在環內相遇,時間複雜度為O(n)。 拓展問題1:如果單鏈表有環,找出環的入口節點(環的連線點)。 這裡先證明一個

JavaScript判斷一個物件是否為空

寫一個函式 isEmptyObject,判斷一個物件是不是空物件 function isEmptyObject(obj){ for(var item in obj){ ret

JS心得——判斷一個物件是否為空

   判斷一個物件是否為空物件,本文給出三種判斷方法: 最常見的思路,for...in...遍歷屬性,為真則為“非空陣列”;否則為“空陣列”      2.通過JSON自帶的.stringify方法來判斷:            3.ES6新增的方法Object.keys():