我有几个Android应用程序,大约80%的代码是相同的,所以我把它放在一个包"库"。 Eclipse似乎把它称为一个库,尽管它是一个包,而不是像我需要实例化的类。设置事物的唯一位(即查找表)与包是分开的。这很好用,我可以调用包函数。有没有办法倒退。在我的每个应用程序中,我想要一个函数(即foo()),它在每个应用程序中执行不同的操作。我希望能够从包中的函数调用foo()。
答案 0 :(得分:1)
将所有内容都视为库,甚至是主要应用程序。
然后我认为你的情况目前是这样的:
common-lib
app1
,需要common-lib
app2
,需要common-lib
app3
,需要common-lib
您现在希望common-lib
引用app1/2/3
中的代码吗?这是不可能的,但也许你可以使用dependency injection来实现这一点。
在common-lib
中创建一个界面,用于定义您需要调用的操作。然后在app1/2/3
中创建实现该接口的类。最后,让app1/2/3
将其接口版本的实例传递给common-lib
,以便它可以使用它。
在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
可以调用MasterOfCeremonies.introduce(new StudentJohn())
,然后app1
可以调用MasterOfCeremonies.introduce(new StudentMary())
,而common-lib
会为每个人执行不同的操作。
我不知道你的具体情况,但另一件可能有用的事情就是让另一个更平常的#34更常见。图书馆,像这样:
other-lib
common-lib
,需要other-lib
app1
,需要common-lib
app2
,需要common-lib
app3
,需要common-lib