在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帮助站点上的描述并没有真正帮助:“这是一个本地变量,方法内部的匿名或本地类使用该变量,从而成为匿名类的字段。” 这如何适用?我需要担心吗?
颜色表示参数或局部变量在匿名类(在本例中为lambda)的外部声明并在内部使用。为了使之成为可能,javac编译器将在匿名类中创建一个合成字段来存储变量。您可以通过检查字节码(View > Show Bytecode
)来看到这一点。
这不用担心,也不是警告,它只是提供信息的语法的颜色。这确实意味着变量是隐式或显式最终的,因此在不中断编译的情况下就不可能重新分配它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句