checkstyle Java check style:最终参数引用变量赋值
我正在一个Java项目中解决Checkstyle警告
假设这是我的方法:
public SomeObject someObjectBehavior(SomeObject oldSomeObject,
SomeObject newSomeObject) {
if(oldSomeObject == null) {
oldSomeObject = newSomeObject;
}
}
当我启用Checkstyle时,它会通知
Parameter oldSomeObject should be final
Parameter newSomeObject should be final
当我像这样转换两个参数时:
public SomeObject someObjectBehavior(final SomeObject oldSomeObject,
final SomeObject newSomeObject) {
if(oldSomeObject == null) {
oldSomeObject = newSomeObject; //Assignment operation
}
}
所以,现在赋值操作是不可能的,Java代码中有一个错误
The final local variable oldSomeObject cannot be assigned. It must be blank and not using a compound assignment.
如果你们中有人遇到过这种情况,那么请帮助我,因为我正在尝试解决所有Checkstyle问题
多谢各位
问候
安库尔·夏尔马
# 1 楼答案
重新指定参数被认为是错误的风格。您应该创建一个新的局部变量
# 2 楼答案
将参数定义为final的主要原因是避免以后无意中覆盖它们。如果您将它们定义为final,则始终可以确保参数始终是在第一时间赋予方法的参数
如果要更改值,最好使用新的局部变量。在许多情况下,只分配一次变量可以使代码更具可读性。这并不总是可能的,但通常是可能的
试试像这样的东西
# 3 楼答案
您提供的示例方法
这是一个完美的例子,说明了为什么制作参数
final
是一个好主意。如果不使用变量final
,您可能不会意识到您的方法什么都不做,因为重新指定参数引用不会改变方法之外的任何内容# 4 楼答案
这个检查式规则是一个完美的例子,说明了先射击(必须是最终的,否则是错误的),然后再提问(是否真的进行了重新分配)