PMD CallSuperInConstructor 是什么原因?
What is the reason for PMD CallSuperInConstructor?
PMD 定义规则 CallSuperInConstructor。当编译器不需要时,在构造函数中添加对 super()
的无参数调用的目的是什么?
我意识到我可以禁用该规则或使用 @SuppressWarnings
使每个 class 中的规则静音。
This question 处理为什么应该在构造函数中调用 super(...)
。我的问题是关于为什么在编译器不需要时添加无参数 super()
调用。
如果你的class
- 有许多重载的构造函数
- 正在扩展一个非
Object
class,它有许多重载的构造函数
然后当您显式调用 super()
时,它避免了调用 class/superclass 构造函数的混淆。
说明上述内容的示例:
class Foo {
final int x;
Foo(int x) {
this.x = x;
}
Foo() {
this.x = 1;
}
}
class Bar extends Foo {
Bar(int x) {
}
}
问题 - new Bar(10).x
的值是多少?
PMD 定义规则 CallSuperInConstructor。当编译器不需要时,在构造函数中添加对 super()
的无参数调用的目的是什么?
我意识到我可以禁用该规则或使用 @SuppressWarnings
使每个 class 中的规则静音。
This question 处理为什么应该在构造函数中调用 super(...)
。我的问题是关于为什么在编译器不需要时添加无参数 super()
调用。
如果你的class
- 有许多重载的构造函数
- 正在扩展一个非
Object
class,它有许多重载的构造函数
然后当您显式调用 super()
时,它避免了调用 class/superclass 构造函数的混淆。
说明上述内容的示例:
class Foo {
final int x;
Foo(int x) {
this.x = x;
}
Foo() {
this.x = 1;
}
}
class Bar extends Foo {
Bar(int x) {
}
}
问题 - new Bar(10).x
的值是多少?