Rob*_*wis 6 java intellij-idea android-studio
在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;
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这意味着什么.关于JetBrains的帮助网站的描述并没有真正帮助:"这是一个局部变量,由方法中的匿名或本地类使用,因此成为匿名类的字段." 这是如何适用的?这是我需要担心的事情吗?
着色表示参数或局部变量在外部声明并在匿名类(或在本例中为lambda)中使用.为了实现这一点,javac编译器将在匿名类中创建一个合成字段来存储变量.您可以通过检查字节码(View > Show Bytecode)来看到这一点.
这不是值得担心的,它不是警告,它只是提供信息的语法着色.它确实意味着变量是隐式或显式最终的,因此不可能在不破坏编译的情况下重新分配它.
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |