gpt4 book ai didi

android - CallSuper 注释如何评估重写方法是否正在调用 super 方法?

转载 作者:行者123 更新时间:2023-12-05 02:56:18 25 4
gpt4 key购买 nike

我很好奇当我调用 super.onCreate() 失败时,我的 andorid 工作室如何能够在我的 onCreate() 方法中通知我然后才知道 Android(太聪明了)实现了注解 CallSuper 以确保被覆盖的方法正在调用 super 方法。

我刚刚进入 CallSuper 以了解内部发生的事情的魔力,

package androidx.annotation;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.CLASS;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
* Denotes that any overriding methods should invoke this method as well.
* <p>
* Example:
* <pre><code>
* &#64;CallSuper
* public abstract void onFocusLost();
* </code></pre>
*/
@Documented
@Retention(CLASS)
@Target({METHOD})
public @interface CallSuper {
}

源代码引用:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/annotation/CallSuper.java但令我惊讶的是它什么也没做。它在哪里根据这个注释评估方法?编译器如何做到这一点?我很好奇。

最佳答案

它通过 bundle 到 android 开发人员工具中的 lint 规则工作。

不只是 @CallSuper注释单独行动。注释用作随附的 lint 规则的标识符。查看 CallSuperDetector 的来源.

关于android - CallSuper 注释如何评估重写方法是否正在调用 super 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60618212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com