use*_*042 3 java annotations interface kotlin
换句话说,Kotlin 接口和注释之间有什么区别?
我问这个问题是因为在“文档”中我读到注释类是接口的一种形式,对我来说,我无法说出两者之间的主要区别。文档链接:https://kotlinlang.org/docs/annotations.html#instantiation
我一直避免问这个问题,但令人惊讶的是,我在网上找不到这个问题的明确答案。
任何帮助,将不胜感激。
这里没有必要解释接口是什么,因为有数千篇关于它们的文章,因为它们是几乎每个 OOP 的基本功能。
\n从技术上讲,注释是接口的子类型,但是 \xe2\x80\x99 对于理解它们并没有真正的帮助,因为你不会\xe2\x80\x99 在典型代码中将它们用于类似接口的目的。
\n注释用于将元数据附加到代码,可用于启用语言语法不直接支持的功能。
\n在 Kotlin 中,提供了许多用于启用与其他平台无关的 JVM 功能,因此它们没有包含在语言语法中。例如,@Synchronized和@JvmField。\xe2\x80\x99s 还有一个用于 JVM 上面向未来的内联类,@JvmInline它用于将编译后的特定于 Kotlin 的内联类版本与将来相当于 Java 的默认实现区分开来record。
在 Android 上,提供了一些针对 Android 代码特定问题的编译器警告和错误,例如使用错误类型的资源 ID 作为函数参数,例如@ColorRes或@StringRes。它们还提供了编译后可由构建工具使用的类,例如@Keep,它可以防止类在发布构建中被缩小和混淆。
一些使用反射的库提供注释来帮助库知道如何处理代码。例如,Gson 用于自动在类与 JSON 字符串之间进行转换,它有一些用于指定字段应在字符串中转换为什么名称。
\n自己制作是一项有点高级的技能。如果您构建自己的使用反射的工具,那么执行类似 GSON 使用的操作会更常见。但您也可以将其用于编译器工具和 linter,如上面的 Android 示例。
\n