在Android Studio中,下面的代碼有顏色,以指示「隱匿名類參數」變量commandBytes
:在這種情況下,「隱式匿名類參數」是什麼意思?
public boolean writeCommand(byte[] commandBytes) {
if(writeCommandInProgress.compareAndSet(false, true)) {
writeSubscription = bleDevice
.establishConnection(asBleServiceRef, false)
.flatMap(rxBleConnection -> rxBleConnection.writeCharacteristic(asInputCharId, commandBytes))
.subscribe(
characteristicValue -> {
writeCommandInProgress.set(false);
if(!Arrays.equals(characteristicValue, commandBytes))
Log.d(LOG_TAG, "Data read back from writeCommand() doesn't match input");
},
throwable -> Log.d(LOG_TAG, "Error in writeCommand: " + commandBytes.toString() + "; " + throwable.getMessage())
);
return true;
} else return false;
}
我想不通這是什麼意思。對JetBrains的幫助網站的描述並不真正有幫助:「這是一個局部變量,由方法內部的匿名或本地類使用,因此成爲匿名類的一個字段。」這如何適用?這是我需要擔心的事嗎?
我很好奇,Google'd,我看到你是互聯網上唯一一個詢問這個問題的人:-)對它的解釋似乎很明顯,但不清楚它的含義可能是什麼。一對夫婦猜測:也許只是讓你知道它會保存一個參考,所以可能不會GC'd?爲了警告潛在的多線程問題? –
另一方面,如果這是產品代碼,誰必須維護它,誰會恨你。沒有人能夠看到這一點,並確定它在不花費大量時間的情況下做了什麼。 –
實際上不是生產代碼,而是來自RxAndroidBle庫的作者的稍微改編的片段,用於測試目的。至於說明是顯而易見的,請幫助我指出匿名類,該變量是一個隱含參數? –