我正在尝试获取可能尚未初始化或尚未初始化的几个片段的 id
int i = myFragment.getId();
, int j = mySecondFragment.getId();
.
我的问题:是否有一种更清洁/更好的方法来获取每个有效片段的 ID,而不是
if (myFragment != null) {int i = myFragment.getId();}
?
你可以使用谷歌番石榴。
当然你也可以实现类似的功能,但是 Guava 给出了一些令人惊叹的例子。
例如,假设一个参数可能为空,我们称它为Optional
这个想法是,如果是,你会很快失败,只是不要接受空值。甚至,为它定义一个默认值。
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
}
这个想法是你不要让空值通过你的应用程序的某个级别,理想的情况是它永远不会超过视图(或从数据库返回的持久层)。
如果这个想法一直贯彻到底。在业务层的核心,您不必担心空值。
你可以用番石榴做很多其他的事情,如果你决定听从我的建议,一定要充分利用它:)
如果这是您经常做的事情,那么您可以创建一个为您进行检查的函数。所以而不是打字
if (myFragment != null) {int i = myFragment.getId();}
一直以来你都可以做类似的事情
public ID getFragmentId(Fragment myFragment){
if (myFragment != null) {
return myFragment.getId();
} else {
return someDefaultValue;
}
}
然后打电话
i = getFragmentID(myFragment);
避免大量重复输入,并使您的代码更清晰。