在这种情况下,"implicit anonymous class parameter"是什么意思?



在 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) 来查看这一点。

这不是需要担心的事情,它不是警告,它只是提供信息的语法着色。这确实意味着变量是隐式或显式最终的,因此不可能在不破坏编译的情况下重新分配它。

相关内容

最新更新