【问题标题】:Android Deprecated Annotation is deprecated, what's the replacement?Android Deprecated Annotation 已弃用,替代品是什么?
【发布时间】:2021-05-26 12:59:20
【问题描述】:

根据Official Android Documentation Deprecated 本身在 API 级别 S 中已被弃用。那么 Deprecated 本身已被弃用的替代品是什么?

编辑:添加网络存档link 以供历史参考。

【问题讨论】:

  • 很讽刺,我想知道他们是否在自己身上使用了注释
  • @assylias 基于list,“S 级”将是今年发布的 API 31 又名 Android 12(API 30 是“R”,字母表中的下一个是“S”)。
  • @Robert 如何在尚未发布的 API 级别中弃用某些东西?
  • 根据time table of Android 12,应该可以使用第一个开发者预览版。这些版本很可能尚未公开,仅适用于 Android 设备制造商。因此“未发布”可能是错误的,它只是没有公开发布。

标签: java android annotations deprecated


【解决方案1】:

这是一个文档错误。 (并且已经修复了!)

Deprecated 注释并未真正被弃用。

显然发生的事情是Deprecated 的源代码在它的 javadoc cmets 中包含了这个:

 * @apiNote
 * It is strongly recommended that the reason for deprecating a program element
 * be explained in the documentation, using the {@code @deprecated}
 * javadoc tag. 

显然,{@code @deprecated} 被metalava 工具解释为@deprecated javadoc 标记。这导致metalava 将“缺失”@Deprecated 注释注入到 Android JAR 文件中的“.class”文件中。据推测,注入的注解随后被合并到网站上生成的 javadocs 中。

感谢Manohar Reddy 在问题跟踪器中找到bug。

您可以找到他们所做的修复here。


不管怎样,java.lang.Deprecated 是一个源自 Oracle / OpenJDK Java(即标准 Java)类库的类。 Android 不会/不应该在没有充分理由的情况下故意弃用它。这会给 Java Android 的可移植性带来另一个障碍。

【讨论】:

猜你喜欢
  • 2016-05-25
  • 2014-05-14
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多