我正在尝试编写一个应用程序,可以在不同的Java平台上运行,例如J2SE,J2ME,Android等。 我已经知道我将不得不为每个平台重新编写大部分UI,但希望重用核心逻辑。
保持此核心的可移植性涉及我所知道的三个缺点:
- 遵循旧的Java 1.4语法,不使用Java 5.0的任何有用语言特性
- 只使用已知适用于这些平台的外部库(也就是说:不使用JNI并且没有依赖于违反此规则的其他库)
- 只使用存在于所有这些平台上的类
我知道如何克服(1):以5.0风格编写代码,并自动转换为1.4 (retroweaver - 尚未尝试,但似乎可以)。
我认为(2)是一个我必须接受的问题。
现在我想知道(3)的最佳解决方法,特别是集合类,这是我最需要的。我能想到以下几种方法:
- 我认识的大多数程序员都不使用
Set
,Map
,List
等,而是退回到Vector
和普通数组。我认为这首先使代码变得丑陋。但我也知道,在TreeSet/Hashset
或LinkedList/ArrayList
之间做出正确的选择对于性能至关重要,总是使用Vector
和数组是不正确的。 - 我可以编写自己的实现。这似乎是重复造轮子,而且我认为我不能像其他人一样做得那么好。
感谢您的答案和意见!
编辑:我最终找到了一个(复杂但不错的)解决方案,并且我认为通过提供自己的答案并接受它,解决方案将变得可见。但事实上,我的答案仍然在最下面。