我有这个andorid代码:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//some code
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
..
}
没有错误。
但是当我将最后几行提取到私有方法中时,会收到此警告,要求向私有方法添加抑制注释。
可能的方法调用,应该应该调用measure
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
...
foo(textMaxWidth);
}
private void foo(int textMaxWidth) {
...
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
..
}
为什么仅在提取后才需要抑制?
@SuppressLint(“ WrongCall”)
答案 0 :(得分:0)
因为通常您只从其替代方法调用超级方法,而不是从单独的方法调用。而且,如果确实从单独的方法调用它们,则可能不会覆盖它们(因此super.whatever()
与whatever()
相同);
您的IDE会警告您,以防您不小心复制了一些代码并意外地包含了该调用。
至少在您的示例代码中,我没有真正看到在单独的方法中进行超级调用的理由。如果您需要在super方法之前调用foo()
的内容,只需将其放在调用foo()
之后。