Java 从软件包中调用android函数;图书馆;

Java 从软件包中调用android函数;图书馆;,java,android,Java,Android,我有几个android应用程序,其中大约80%的代码是相同的,所以我把它放在一个包“库”中。Eclipse似乎将其称为库,尽管它是一个包,而不像我需要实例化的类。用于设置内容的唯一位(即查找表)与包是分开的。这工作正常,我可以调用包函数。有没有退路。在我的每个应用程序中,我希望有一个函数(ie foo())在每个应用程序中执行不同的操作。我希望能够从包中的函数调用foo()。将所有内容都视为一个库,甚至是您的主要应用程序 那么我觉得你现在的情况是这样的, common lib app1,需要c

我有几个android应用程序,其中大约80%的代码是相同的,所以我把它放在一个包“库”中。Eclipse似乎将其称为库,尽管它是一个包,而不像我需要实例化的类。用于设置内容的唯一位(即查找表)与包是分开的。这工作正常,我可以调用包函数。有没有退路。在我的每个应用程序中,我希望有一个函数(ie foo())在每个应用程序中执行不同的操作。我希望能够从包中的函数调用foo()。

将所有内容都视为一个库,甚至是您的主要应用程序

那么我觉得你现在的情况是这样的,

  • common lib
  • app1
    ,需要
    common lib
  • app2
    ,需要
    common lib
  • app3
    ,需要
    common lib
您现在想要
公共库
引用
app1/2/3
中的代码?这是不可能的,但也许你可以通过使用

依赖注入 在
common lib
中创建一个接口,定义需要调用的操作。然后在
app1/2/3
中创建实现该接口的类。最后,让
app1/2/3
将该接口版本的实例传递给
common lib
,以便它可以使用它

公共库中

interface Named {
  void getName();
}

class MasterOfCeremonies {
  static void introduce(Named guest) {
    System.out.println("Please welcome " + guest.getName());
  }
}
app1
中:

public StudentJohn implements Named {
  void getName() {
    return "John";
  }
}
app2
中:

public StudentMary implements Named {
  void getName() {
    return "Mary";
  }
}
这样,
app1
就可以调用
masterofceraments.introduct(newstudentjohn())
,而
app1
就可以调用
masterofceraments.introduct(newstudentmary())
,而
公共库将为每个人做不同的事情

附加说明 我不知道您的具体情况,但另一件可能有用的事情是创建另一个更“普通”的库,如:

  • 其他库
  • 公共库
    ,需要
    其他库
  • app1
    ,需要
    common lib
  • app2
    ,需要
    common lib
  • app3
    ,需要
    common lib