【问题标题】:Can I use deprecated classes?我可以使用已弃用的类吗?
【发布时间】:2019-02-02 15:35:18
【问题描述】:
  1. 使用已弃用的类会导致程序出现严重问题吗?

  2. deprecated是什么意思?

  3. 我还能使用已弃用的类吗?

Android 中的 ProgressDialog 视图就是一个例子。它已从 API 26 中弃用,替换为 ProgressBar 视图。如果我仍然使用 ProgressDialog 会怎样?它非常舒适,正是我想要的。

【问题讨论】:

  • 理论上,应该无限期支持您正在使用的已弃用库。但是,Google Play 商店有时可能不支持您的 API 级别,这意味着您可能无法继续更新您的应用。
  • 弃用意味着它不再受支持。如果它在某个时候停止工作,它将无法修复。它甚至可能最终被完全删除。
  • 对于 android,如果您的目标是较低的 API,则必须使用已弃用的类,而较新的替代方案仅适用于较新的 API……但如果较新的替代方案也适用于较低的 API,则不要使用已弃用的类。
  • @TimBiegeleisen 你是什么意思不能更新我的应用程序?一段代码就是一段代码,无论如何。请解释..
  • @M.kazemAkhgary 这就是我不明白的。我的 API 级别是 26。这意味着不推荐使用 ProgressDialog。对于较低的 API,它会被弃用吗?如果我真的用 ProgressBar 来切换它,下层 API 是否能够运行程序?

标签: java android visual-studio api progressdialog


【解决方案1】:

来自the documentation

注解@Deprecated 的程序元素是不鼓励程序员使用的,通常是因为它很危险,或者因为存在更好的替代方案。当在非弃用代码中使用或覆盖弃用程序元素时,编译器会发出警告。

因此您可以使用一些不推荐使用的方法,但这不是最佳实践,因为存在更好的替代方法(但在某些情况下这甚至可能很危险)

【讨论】:

  • 如果您设置“将警告视为错误”,那么它根本不会编译。
【解决方案2】:

是和不是。您可以使用它们来维护旧的 API 级别,考虑到在较新的 android 版本中这些类可能会被删除。因此,通常您会将其用法包装在 if/else 条件中,以便仅在旧 Android 版本中使用它们来维护此类功能,只有在较新版本中没有兼容替换时才使用它们。

【讨论】:

  • 关于使用 if/else 条件检查 API 级别的注意事项,但向后兼容的解决方案已经进行了此检查,因此使用最新的方法和类也可以确保旧设备上的正确行为。如果该类仅适用于较新的 API,则使用 if/else 条件检查 API 级别可能会有所帮助。
  • 完全正确,我同意你的看法。只是为了澄清,只有在没有向后兼容的解决方案时才应该在这种情况下使用 If/else。
【解决方案3】:

Google 有一个不保持向后兼容性的坏习惯,这是计算机科学和技术中必不可少的最佳实践。我很欣赏弃用意味着有更好的替代品和评论“理论上,你正在使用的弃用库应该得到无限期的支持。但是,Google Play 商店可能在某些时候不支持你的 API 级别,这意味着你可能无法不断更新您的应用程序。”非常中肯。 API 级别应该能够继续支持那些“已弃用”的类。我很确定我们中的许多人都可以找到几个示例,其中所谓的“弃用”比他们的“更新”替代品要好得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 2023-02-14
    • 2021-04-14
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2014-12-28
    相关资源
    最近更新 更多