Uba*_*hat 4 java android intellij-idea
在我的下面的例子中,我想避免每次我想使用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;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Android Studio/IntelliJ.我知道我可以使用@SuppressWarnings 我已经看到了这个问题,但是这使代码变得更加丑陋.
每次我想使用getView时,我想避免编写getView!= null?
您可以使用Null Object模式来避免检查!= 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
}
}
Run Code Online (Sandbox Code Playgroud)
(2)在没有可用视图的情况下使用EmptyView:
//other classes:
private View getView(){
if(viewAvailable) {
return view;
} else {
return EmptyView.emptyView;
}
}
public void showView(){
getView().show();
}
Run Code Online (Sandbox Code Playgroud)
您可以在这里查看Wiki 更多信息和Java示例.
当您null从各种方法返回时,它们可能会导致NullPointerException程序中的程序,并且在较大的项目中将变得非常难以调试.
因此,null从方法返回(并且应该避免它们)是一种不好的做法,这就是Spring API 在尝试从/ classes(如上所述的对象)中检索数据时通常返回空list/ set对象(而不是)的原因.nullDAORepositoryEmptyView
PS:此选项适用于Java8和不使用Java8.如果您使用的是Java8,那么更愿意使用@janos Optional的答案中给出的内容
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |