Java 如何避免多个if null语句

Java 如何避免多个if null语句,java,android,Java,Android,我正在尝试获取几个片段的id,这些片段可能已经初始化,也可能还没有初始化 inti=myFragment.getId(),int j=mySecondFragment.getId() 我的问题:是否有一种更干净/更好的方法来获取每个有效片段的id,而不是 如果(myFragment!=null){int i=myFragment.getId();}?您可以使用它 当然,您也可以实现类似的功能,但Guava给出了一些令人惊讶的例子 例如,假设一个参数可能为null,让我们称之为可选的。如果它是,那

我正在尝试获取几个片段的id,这些片段可能已经初始化,也可能还没有初始化

inti=myFragment.getId()
int j=mySecondFragment.getId()

我的问题:是否有一种更干净/更好的方法来获取每个有效片段的id,而不是

如果(myFragment!=null){int i=myFragment.getId();}

您可以使用它

当然,您也可以实现类似的功能,但Guava给出了一些令人惊讶的例子

例如,假设一个参数可能为null,让我们称之为
可选的
。如果它是,那么你很快就会失败,只是不要接受null。甚至可以为其定义一个默认值

public void method(Integer arg){
    Optional<Integer> possible = Optional.fromNullable(arg);
    Integer myNum = possible.get(); // Throws exception if arg is null
    Integer myNum2 = possible.or(0); // returns 0 if arg is null
}
public void方法(整型参数){
可选可能=可选。fromNullable(arg);
整数myNum=可能。get();//如果arg为null,则引发异常
整数myNum2=可能。或(0);//如果arg为null,则返回0
}
其思想是,不要让null传递到应用程序的某个级别,理想情况是它永远不会通过视图(或从DB返回的持久层)

如果这个想法一直得到贯彻。在业务层的核心,您不必担心空值


你可以用番石榴做很多其他的事情,如果你决定听从我的建议,一定要充分利用它:)

如果这是你经常做的事情,那么你可以做一个功能来帮你检查。因此,与其打字

if (myFragment != null) {int i = myFragment.getId();}
一直以来你都可以做类似的事情

public ID getFragmentId(Fragment myFragment){
    if (myFragment != null) {
        return myFragment.getId();
    } else {
        return someDefaultValue;
    }
}
然后打电话

i = getFragmentID(myFragment);

避免了大量重复输入,使您的代码更加清晰。

检查这个问题:您能显示代码以及您试图使用它的目的吗?我说不出有这么多信息的最佳方法是什么。根据您对id所做的操作,您可以使用总是返回无效id或不改变结果的虚拟实现(可能是单例)替换空片段。假设您要添加所有ID。然后可以使用DummyFragment扩展片段和getID(){return 0;}。这样,无论你有多少个0,结果都是一样的。这可能是我想要的,但在将其转化为手头的问题时有点困难。所以这里的
myFragment
可能是
null
值,但我需要它的id或0。所以我假设
Optional opFragment=Optional.fromNullable(myFragment)
将阻止nullPointerException,但是如何调用
.get().getId()
而不引发相同的异常?在这种情况下,您不需要使用
get
get
将返回正确的值,或者如果为null,则快速失败,在这种情况下,您需要使用
opFragment。或者(0)