任何人都可以解释一下这段代码是如何运作的。
// Method returns null if bitmap not available
public Bitmap getBitMap(long id) {
for ( Bitmap item : myBitmaps.keySet() ) {
if ( item != null) {
if ( item.getId() == id ) {
return item;
}
}
}
return null;
如何在function.sorry中使用两个返回(包括一个if if block),我是java的新手。
答案 0 :(得分:6)
简单。
如果满足两个嵌套条件,则第一个return
语句仅返回item
。
一旦你的循环结束(也就是两个嵌套条件不满足),第二个return
语句会触发并返回null
。
简而言之,如果您的myBitmaps
array
或Collection
包含的Bitmap
不是null
且其id
等于给定{ {1}}对于该方法,返回id
实例。
否则,返回Bitmap
。
如 fge 所述,方法必须满足所有可能的返回路径(除特殊条件外)。
如果未在循环外返回null
,则代码将无法编译。
这种情况会发生,因为如果你的条件没有得到满足,你的循环会终止而不返回任何东西,你的方法也是如此。
答案 1 :(得分:1)
当调用return
语句时,函数退出。您可以在不同的地方有多个return
语句,因为您可能希望根据函数中发生的情况返回不同的值。
答案 2 :(得分:1)
每次只有一次返回。当return item
执行时,它实际上将控件返回到调用此方法的语句行。在这种情况下,return null
将无法执行。当For循环执行完整且当时没有任何事情return null
语句将被执行。
因此,无论方法中是否有多个return语句,一次只有一个return语句会被执行。
答案 3 :(得分:0)
基本上有3个步骤:
Bitmap
myBitmaps
礼物
null
),则继续。否则,让我们迭代到下一个Bitmap
。Bitmap
。所以它的作用是:获取具有指定id的Bitmap(如果存在)。
答案 4 :(得分:-1)
if条件应该是这样的:
if ( item != null && item.getId() == id){
return item;
}