java - 针对不同版本的 Java 代码或预处理进行细微更改?

标签 java android eclipse preprocessor

我正在使用 eclipse 作为 IDE、Java 和 native C++ 开发名为 Flat Out Hockey 的 Android 游戏。 我的问题是代码的 Java 部分。 由于我需要为 FireTV、Google Play 和 OUYA 构建游戏,因此我有不同的方法来处理每个平台上的游戏 handle 输入。 一个问题是 FireTV 使用与 Google Play 和 OUYA 不同的“项目构建目标”,后者是 Amazon 专门为 FireTV 制作的。

这意味着我需要使用在一个构建目标下可用但在另一个构建目标下不可用的导入和类,并在为每个平台构建时不断在它们之间切换。

问题是据我所知Java中没有预处理器? 所以我不能像 C++ 中那样做#ifdef。 这使得我需要注释/取消注释或更改值的代码量超出了应有的数量。

我所做的一个“技巧”是为 Amazon 游戏 handle 类创建一种模拟类,这样我只需更改导入并拥有一个具有相同名称但功能不同的类。

但还有其他问题,例如沉浸式属性仅在 Android OS 5 上可用。 还有其他东西。

所以也许我缺少 Java 中的某些功能,但我真的很想只需要在一个位置设置一个值即可在不同的版本之间切换。

Java/eclipse中有类似的东西吗?

最佳答案

一种方法是将项目分成几个组件:一个“核心”模块,根据公共(public)接口(interface)(它定义的)定义主要实现,然后每个目标都有一个模块,声明这些接口(interface)的实现。

例如,您的核心模块可能定义一个 GamePad 接口(interface),然后您的 FireAdapter 模块将依赖于核心和 Fire 的 API 来创建 FireGamePad(它实现 GamePad)。

每个模块都会成为自己的构建,并具有自己的可交付成果。

关于java - 针对不同版本的 Java 代码或预处理进行细微更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686845/

相关文章:

eclipse - 将新存储库添加到 Eclipse Git 时找不到 git-upload-pack

java - java中作业完成后返回主函数

javascript - 从 Javascript 传递到 Java 时,具有高 Unicode 字符的字符串会损坏

android - SpannableStringBuilder 性能改进?

java - 如何使用lxml更改android xml文件中的属性值,例如 "android:text"

java - 要推送什么到 Git?

java - 在Android widget 类中使用静态成员是否正常?

java - 在mysql中插入记录导致线程数增加

android 模拟器 - 更改屏幕分辨率键盘消失

java - 在没有显式测试套件类声明的情况下清理所有 JUnit 测试