我正在使用 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/