Java 使用Android之外的可包裹模型类和可包裹包装器

Java 使用Android之外的可包裹模型类和可包裹包装器,java,android,parcelable,Java,Android,Parcelable,我想创建一些实现Android的Parcelable接口的模型类,但我希望这些类可以在Android之外使用。我考虑过为所有这些模型类实现一个包装器(它们以相同的方式序列化,内部使用Google协议缓冲区),但我不确定如何实现 假设我有一个接口模型和一个实现类ModelImpl。目前,Model扩展了Parcelable,但我想将Model和ModelImpl与Parcelable分离,并使用ParcelWrapper。最好,这一切都应该是类型安全和良好的。有没有关于如何解决这个问题的建议 如果

我想创建一些实现Android的Parcelable接口的模型类,但我希望这些类可以在Android之外使用。我考虑过为所有这些模型类实现一个包装器(它们以相同的方式序列化,内部使用Google协议缓冲区),但我不确定如何实现

假设我有一个接口模型和一个实现类ModelImpl。目前,Model扩展了Parcelable,但我想将Model和ModelImpl与Parcelable分离,并使用ParcelWrapper。最好,这一切都应该是类型安全和良好的。有没有关于如何解决这个问题的建议

如果我遇到一个解决方案,我当然会把它贴在这里


谢谢!:)

我最终使用了decorator模式。现在我有了:

  • 模型,定义我需要的公共方法的接口
  • ModelImpl,实际实现的模型类(使用Google协议缓冲区进行序列化)
  • ModelParcelDecorator,它实现了Model和Parcelable,并获取模型实现的一个实例并将其存储为引用,将所有方法从模型接口委托给该实例。ModelParcelDecorator直接使用protocol buffers序列化机制,因此我不需要将其序列化到包中并手动返回
Model和ModelImpl现在可以驻留在自己的库中,并在Android外部使用


不幸的是,我需要为每个模型类编写一个decorator,但这是迄今为止我找到的最好的解决方案。如果我发现更好的,我会在这里发布。

那么你想使用parcelable功能,还是只想在android之外编译类?一个解决方案是扩展一个代理类,该代理类有一个涉及parcelable的android定义,而另一个安卓之外的定义则没有。(两个名称和包相同的类在两个位置定义,一个用于android,一个用于java)另一个解决方案是使用注释在编译时注入extends parcelabletime@meredrica:只需能够在Android之外编译和使用值类即可。基本上,同样的模型可以用在手机上,比如说服务器上。@njzk2:你的意思是注释和反射?使用两个具有相同限定名称的类的解决方案有点“不干净”。这意味着如果这个类不以某种方式存在,这个库就无法编译,这是一种反向依赖(除非我误解了什么)。但是谢谢你的建议!我已经尝试过使用类似于ParcelWrapper或ParcelWrapper的东西,但是还没有成功;装饰器模式不会更改接口。