如果我将null值传递给方法,应用程序将与空指针异常崩溃

时间:2016-07-20 12:02:38

标签: java android eclipse nullpointerexception

调用此方法并在第二个参数中传递null正在崩溃。

App.revertMessage(actContext, null, name);

    public static void revertMessage(final Context ctx, final Item item,
        final String name) {

    logite("revertMessage()", "item " + item == null ? "" : item.code               // it is crashing here with null pointer exception
            + " name : " + name == null ? "" : item.name );
}

public static void logite(String tag, String msg) {
    tag = "sTrack    " + tag;
    Log.e(tag, msg);
}

项目类是

public class Item {

public String code, name, packName;

public Item(HashMap<String, String> data) {
    code = data.get(XT.ITEM_CODE);
    name = data.get(XT.ITEM_NAME) + "[" + code + "]";
    packName = data.get(XT.PACK_NAME);
}

/**
 * Copy constructor
 * 
 * @param item
 */
public Item(Item item) {
    code = item.code;
    name = item.name;
    packName = item.packName;
}}

当我将null值传递给它崩溃的方法时,我不知道为什么我的逻辑错误或者是什么。 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

检查item是否为空,而不是使用ternery操作。

    if (item != null) {
        logite("revertMessage()", "item " + item.code
                + " name : " + item.name );
    }
    else {
        logite("revertMessage()", "item "
                + " name : " ); //weird message tho
    }

不确定它是否可行,但可能

答案 1 :(得分:0)

因为item.name仍然可以为空。

 logite("revertMessage()", "item " + item == null ? "" : item.code              
            + " name : " + name == null ? "" : item.name );
                           ^ change to item

这与调用它一样:

if(item == null) // ""
if(name == null) // "" , item.name() // item is still null

使用name更改item,您就可以了。