gpt4 book ai didi

java - 在 java 中使用方法避免 != null

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:29 25 4
gpt4 key购买 nike

在下面的示例中,我想避免在每次要使用 getView 时都编写 getView != null。为了保持清洁,我创建了一个方法 hasView() 来为我进行检查。但是我仍然收到警告。有什么办法解决这个问题吗?

import android.support.annotation.Nullable;

public void showView(){
if(hasView()){
getView().show(); // Shows warning Method invocation 'showLoading' may produce 'java.lang.NullPointerException'
}
}


boolean hasView(){
return getView() != null;
}

@Nullable
private View getView(){
return view;
}

我正在使用 Android Studio/IntelliJ。我知道我可以使用@SuppressWarnings I have seen this question但这使代码更难看。

最佳答案

I want to avoid writing getView != null every time I want to use getView ?

您可以使用空对象模式 来避免检查!= null程序各处,代码如下所示:

(1)定义一个EmptyView类

   public EmptyView {

//Define a static emptyView, so that we can reuse the same object
public static final EmptyView emptyView = new EmptyView();

public show() {
//does nothing
}
}

(2) 在没有可用 View 的情况下使用 EmptyView:

    //other classes:
private View getView(){
if(viewAvailable) {
return view;
} else {
return EmptyView.emptyView;
}
}

public void showView(){
getView().show();
}

可以看维基here更多信息和 Java 示例。

当你返回时null通过各种方法,它们可能会导致 NullPointerException在程序中,并且在较大的项目中将变得非常难以调试。

因此,返回 null 是一种不好的做法来自方法(应该避免使用它们),这就是 Spring API 通常返回空 list 的原因/set对象(而不是 null ),同时尝试从 DAO 检索数据/Repository类(如上文所述的 EmptyView 对象)。

附注:此选项适用于和不适用 Java8。如果您使用的是 Java8,那么更喜欢使用 Optional正如@janos 的回答中给出的

关于java - 在 java 中使用方法避免 != null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567153/

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