【发布时间】:2017-07-07 05:22:50
【问题描述】:
在 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 帮助网站上的描述并没有真正帮助:“这是一个局部变量,由方法内部的匿名或本地类使用,因此成为匿名类的一个字段。”这如何应用?这是我需要担心的事情吗?
【问题讨论】:
-
我很好奇,谷歌搜索了一下,我发现你是互联网上唯一一个问这个问题的人 :-) 对它的含义的解释似乎很明显,但它的含义并不完全清楚那可能是。几个猜测:也许只是为了让你知道它会持有一个引用,所以可能不会被 GC 处理?警告潜在的多线程问题?
-
另一方面,如果这是生产代码,那么维护它的人会讨厌你。没有人能够在不花费大量时间的情况下查看并确定它的作用。
-
实际上不是生产代码,而是来自 RxAndroidBle 库作者的稍微改编的 sn-p,用于测试目的。至于解释很明显,请通过指出该变量是隐式参数的匿名类来帮助我?
-
@RobertLewis 可以请您回复..!我的回答
标签: java android-studio intellij-idea