Java 处理库方法抛出的Null?

Java 处理库方法抛出的Null?,java,string,validation,nullpointerexception,null,Java,String,Validation,Nullpointerexception,Null,我有下面的代码,我试图处理抛出的空指针,但即使它是空的,我仍然会得到空错误 当LibraryMethod.getValue为null时,如何最有效地处理null指针并返回空字符串 private static String createValue(NodeList userAttributes) { if(null != LibraryMethod.getValue(LibraryMethod.getNode(userAttributes, USER_NAMES).ge

我有下面的代码,我试图处理抛出的空指针,但即使它是空的,我仍然会得到空错误

LibraryMethod.getValue
为null时,如何最有效地处理null指针并返回空字符串

private static String createValue(NodeList userAttributes) {

            if(null != LibraryMethod.getValue(LibraryMethod.getNode(userAttributes, USER_NAMES).get())){
                return LibraryMethod.getValue(LibraryMethod.getNode(userAttributes, USER_NAMES).get());
            }

            return EMPTY_STRING;
        }

解决这类问题有许多模式

  • 公开
    get(xyz)
    方法的库也可以公开
    has(xyz)
    方法:

    if (lib.has(xyz)) {
        return lib.get(xyz);
    }
    
    return 0;
    
  • 公开
    get(xyz)
    的库也可以公开
    get(xyz,defaultval)

  • 某些编程语言支持可选的链接语法,例如:

    return user?.address?.street;
    
    try {
        result = lib.get(xyz);
    } catch (NoSuchKeyException e) {
        result = 0;
    }
    
  • 使用某种类型的异常接口,例如:

    return user?.address?.street;
    
    try {
        result = lib.get(xyz);
    } catch (NoSuchKeyException e) {
        result = 0;
    }
    

  • 与选项3相关,Java有一个概念,您可能想看看。

    什么是
    LibraryMethod
    ?那是你写的吗?此外,此代码不会抛出null或null指针-它会抛出NullPointerException(大概是这样)。