如何确保代码不引发空指针异常未在请求正文中定义属性

问题描述

我正在开发一个Spring Boot API,该API可以通过调用名为gamesServiceAPI的服务来提取用户Steam游戏统计信息,Battle Net游戏统计信息以及其他各种游戏统计信息

以下是提取用户游戏统计数据的服务方法的逻辑。

public void preload(User user) throws IOException,SteamApiException {
    if(!user.getBattlenet().equals(""))
    {
        loader.loadCallOfDuty(user);
    }
    if(!user.getpubgPlayerName().equals("") && user.getpubgPlayerName() != null)
    {
       loader.loadpubg(user);
    }
    if(!user.getRunescapedisplayName().equals("") && user.getRunescapedisplayName() != null) {
        loader.loadRunescape(user);
    }

    if(!user.getSteamId().equals("") && user.getSteamId() != null)
    {
       if(APIFetcher.resolveCSGO(user.getSteamId()))
        {
            loader.loadCSGO(user);
        }
        if(APIFetcher.resolveTeamFortresstwo(user.getSteamId()))
        {
            loader.loadTeamFortress2(user);
        }
        //Else do nothing,since they dont play the games we cover.
    }

}

现在,并不是所有用户都可以玩我们服务中的所有游戏,有些人可能会玩符文,而其他游戏则不会。

现在,当我传递来自POSTMAN的请求时,该请求到达终点并调用方法

{
"username": "Steven R","password": "hi12345","steamId": "76561198882328170","pubgPlayerName": "YYpD_33510888","runescapedisplayName": "DrumGun"
}

我尚未指定我的Battle Net ID,由于用户未在Battle net平台上玩游戏,因此if语句中会引发空指针异常,该如何缓解呢?

解决方法

人们通常会颠倒equals-检查,以将检查的恒定部分用作第一部分,在该部分上调用可能非常恒定的部分以避免上述可能的{{1 } s,类似于

NullPointerException