相关疑难解决方法(0)

避免!= null语句

我用object != null了很多东西来避免NullPointerException.

有没有一个很好的替代品呢?

例如:

if (someobject != null) {
    someobject.doCalc();
}
Run Code Online (Sandbox Code Playgroud)

NullPointerException当不知道对象是否存在时,这避免了a null.

请注意,接受的答案可能已过期,请参阅/sf/answers/167020941/以获取更新的方法.

java null object nullpointerexception

3904
推荐指数
42
解决办法
119万
查看次数

有没有更好的方法在Java中执行空检查?

这可能看起来像一个原始问题,或者可以通过我不知道的简单实用程序库方法来完成。

目的是检查嵌套在两个对象下的布尔字段的值。

private boolean sourceWebsite(Registration registration) {
    Application application = registration.getApplication();
    if (application == null) {
        return true;
    }

    Metadata metadata = application.getMetadata();
    if (metadata == null) {
        return true;
    }

    Boolean source = metadata.getSource();
    if (source == null) {
        return true;
    }

    return !source;
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以一次完成if()if为了可读性,我在这里添加了多个。

有没有一种方法可以简化上面的if语句,并有一个简单的实用工具类返回Boolean source父对象是否为null的值?

java conditional if-statement

23
推荐指数
2
解决办法
2032
查看次数

Null check vs Optional是检查

有人可以解释一下Optional我们如何避免NullPointerException吗?

Optional<String> op = someFunc()
if(op.isPresent()) {
   op.get();
}
String possibleNull = op.get();
Run Code Online (Sandbox Code Playgroud)

这个代码不是很容易出现NullPointerException吗?如果是这样,那么为什么这个代码更受欢迎

String op = someFunc()
if(op != null) {
   op.get();
}
String possibleNull = op;
Run Code Online (Sandbox Code Playgroud)

Optional除了帮助我们了解函数是否实际具有返回值之外,还有什么可能带来的好处

java functional-programming optional java-8

14
推荐指数
1
解决办法
1万
查看次数

如何更好的重构方法链可以在java中返回null?

我的代码如下:

obj1 = SomeObject.method1();
if (obj1 != null) {
  obj2 = obj1.method2();
  if (obj2 != null) {
     obj3 = obj2.method3();
     if (obj3 != null) {
              ............


     return objN.methodM();

   }
  }
 }
....
Run Code Online (Sandbox Code Playgroud)

我有近10步.它似乎非常脆弱且容易出错.有没有更好的方法来检查空链方法?

谢谢.

java methods null refactoring chain

8
推荐指数
3
解决办法
3073
查看次数

检查get链中是否有任何对象为null,而不必检查每个深度

我正在使用旧版应用程序,在该应用程序中,我经常不得不访问像下面这样嵌套的属性:

a.getB().getC().getD().getE().getF()
Run Code Online (Sandbox Code Playgroud)

问题在于,在任何深度下,该值都可能为空。当然,我可以像这样检查每个深度:

public Optional<F> retrieveValue(A a) {
  if(a != null && a.getB() != null && a.getB().getC() != null && 
     a.getB().getC().getD() != null && 
     a.getB().getC().getD().getE() != null && 
     a.getB().getC().getD().getE().getF() != null) {
    return Optional.of(a.getB().getC().getD().getE().getF());
  } else {
    return Optional.empty();
  }
}

F existingOrCreated = retrieveValue(a).orElse(new F());
Run Code Online (Sandbox Code Playgroud)

但是我必须在许多地方对许多不同的对象执行此操作,因此这些检查会使代码膨胀。大多数情况下,对象不是非null,但是在少数情况下,对象为null。有没有一种更简洁的方法?我正在使用Java 8,但是无法更新提供的旧代码。

java java-8 null-check

7
推荐指数
1
解决办法
160
查看次数

Java 11 中的高效空检查

我需要使用对象中 3 个级别的 getter。

response.getServiceError().getErrorCode()
Run Code Online (Sandbox Code Playgroud)

一个或多个对象可能为 NULL。现在,我正在这样做

if (response != null && response.getServiceError() != null && response.getServiceError().getErrorCode() != null && response.getServiceError().getErrorCode().equals("errCode123")) {
     //doSomething;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好和/或优雅的方式来构建 if 条件?

java null null-check java-11

4
推荐指数
1
解决办法
1448
查看次数

处理避免 NullPointerException 的链式方法调用 - 哪个是最好的方法?

处理避免 NullPointerException 的链式方法调用 - 哪个是最好的方法?

让我们想象一下这种情景:3级MeetingRoomProjector

会议可能设置了一个房间,里面可能有一个投影仪。

现在假设我想知道投影仪的型号是什么。最自然的事情是做类似的事情

Meeting meeting = someMethod();
return meeting.getRoom().getProjector().getModelName();
Run Code Online (Sandbox Code Playgroud)

此代码可以正确返回投影仪的型号名称,不幸的是,此代码也可能导致异常:java.lang.NullPointerException如果包含在根类 Meeting(甚至 Meeting 类)中的类之一为空。

为了防止这个问题,并在最坏的情况下获得一个默认值,我们应该检查每个调用的返回值。

Meeting meeting = someMethod();
if (meeting != null) {
    Room room = meeting.getRoom();
    if (room != null) {
        Projector projector = room.getProjector();
        if (projector != null) {
            return projector.getModelName;
        }
    }
}
return "No Projector Exist";
Run Code Online (Sandbox Code Playgroud)

现在的代码非常糟糕。

处理这种避免 NullPointerException 的链式方法调用的最佳方法是什么?

java

1
推荐指数
1
解决办法
603
查看次数