【问题标题】:Handling Optional APIs in J2ME在 J2ME 中处理可选 API
【发布时间】:2014-06-10 23:44:35
【问题描述】:

在 Java Mobile 中使用可选 API 的正确方式是什么?

  • 是否需要制作不同版本的应用?
  • 或者在运行时使用 System.getProperty() 检查 API 可用性是否足够?

假设我希望我的应用支持 JSR-256(传感器 API)。如果设备不支持,从javax.microedition.sensor 导入类并注册这些类型的变量会破坏我的应用程序吗?

我确信必须有一种非常标准的方法来处理这种情况。

谢谢!

【问题讨论】:

    标签: api java-me optional


    【解决方案1】:

    您可以使用系统属性或 Class.forName() 来查看 API 是否可用。只需确保使用这些 API 的类不会加载到不支持它们的手机上。您可以制作一个支持多种不同手机的 midlet 版本。

    【讨论】:

    【解决方案2】:

    有两种方法可以确定支持哪些 API。如果您打算走系统属性路线,请查看list here。课程can also be used,尽管你必须小心。更难的问题是确保类不会被加载:

    Albus 链接到的文章有以下引用:

    类加载器(见下文)可以选择 提前加载类型 最终使用。如果这个策略是 选择,类加载器不得 报告任何问题(通过抛出 java.lang.LinkageError 的子类) 在加载过程中遇到,直到 类型的第一次主动使用。

    因此,如果在运行时实际上并未使用该类,那么您不应该遇到任何错误。当然,Java ME 有很多实现,我不确定是否可以安全地相信它们都能正确实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2017-04-25
      相关资源
      最近更新 更多