android开发外部类,集成外部纯Java库并对其进行Android类访问

你必须在纯Java库和android之间定义一个绑定。 您可以使用dependency injection来使用类签名注入模型,然后在应用程序内部(或插入另一个项目,如插件)中定义parcelable模型。 或者你可以使用generics来实现相同的function。 请记住,因为java库已经编译,从技术上讲,你不能通过将它导入android项目来改变它(我看到人们从依赖项“重写”一些文件,然后用整个原始路径添加它们欺骗类路径,但这是非常危险的,因为你不能与依赖的代码的其余部分进行交互,如果有什么变化,事情就会破坏)。

如果您可以访问纯java的库源代码,则将其修改为使用工厂或模型提供者。 如果没有,请扩展模型,添加parcelable支持,并尝试使用它们而不是原始模型类。

例:

让我们假设我们有一个模型和一些使用它的函数:

public class myModel{ private int id; private String name; public void setId(int id){ this.id = id; } //more getters and setters } public interface myModelCreator{ public myModel create(T toModel); public T uncreate(myModel fromModel); } public static void doSomething(myModel model){ //some library operations }

现在,在android项目中:

public class myAndroidModel extends myModel implements Parcelable{ /*Implements the parcelable methods using the class accessors, or you can change the myModel members to protected.*/ } public class myAndroidModelCreator implements myModelCreator{ @Override public myModel create(myAndroidModel toModel){ //create the myModel using the parcelable class. } @Override public myAndroidModel uncreate(myModel fromModel){ //reverse operation. } }

现在,在android项目中,您可以在任何地方使用parcelable子类,并且每次需要调用库时,您都可以使用parcelables作为参数提供创建者接口。 另一种方法是将库方法签名更改为以下内容:

public static voiddoSomething(T model){ //some library operations }

所以你可以直接使用parcelable子类。 但是,根据您的层次结构,这可能是不可能的。 最后,您可以尝试使用Android项目中的Guice和Roboguice在java项目中实现dependency injection。 由于roboguice使用guice,因此它们可以互操作,但这是一个很长的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值