在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库的作者的稍微改编的片段,用于测试目的。至于说明是显而易见的,请帮助我指出匿名类,该变量是一个隐含参数? –