gpt4 book ai didi

Java如何防止空对象异常

转载 作者:行者123 更新时间:2023-12-01 18:42:06 24 4
gpt4 key购买 nike

我正在尝试编写越来越少的代码,并且我正在尝试找到一种防止崩溃的方法。

我遇到的一个例子是:

public class MyClass
{
private User user;

public MyClass()
{
// Get user from another class
// Another thread, user can be null for couple of seconds or minutes
// Asynchronous call
user = AnotherClass.getUser();

// start method
go();
}

private void go()
{
// Method 1
// Program it is crashing if user is null
if (user.getId() == 155)
{
// TO DO
}
else
{
System.out.println("User is NOT 155 !");
}

// Method 2
// Program still crashes if user is null
if (user != null && user.getId() == 155)
{
// To do
}
else
{
System.out.println("user is not 155");
}

// Method 3
// Program wont crash, but I write much more code !
if (user != null)
{
if (user.getId() == 155)
{
// To do
}
else
{
System.out.println("User is not 155 !");
}
}
else
{
System.out.println("User is not 155 !");
}
}
}

如您所见,方法 3 有效,但我正在编写更多代码...我应该做什么?

最佳答案

首选方式Short-circuit evaluation ,即方法2。

when the first argument of the AND function evaluates to false, the overall value must be false;

      if (user != null && user.getId() == 155)
{
// To do
}
else
{
System.out.println("user is not 155");
}

这是最可取且可读的代码。

您认为方法 2 崩溃而方法 3 有效的假设是错误的。在上面的代码中,如果 user != null 则仅执行 user.getId() == 155

关于Java如何防止空对象异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com