在我的项目中,我有两块代码,我想将它们分开以使一部分成为库。昨天,当我试图将它分开时,我注意到我的新库和我的应用程序层之间存在非常强大的连接,这是由Enum类型引起的。当然我可以简单地将Enum更改为int的主要类型或String,这样我就可以在应用程序层中定义这些值,但通过这样做,我将摆脱我想要的类型检查机制具有。如果不放弃Java / Android的类型检查机制,还有其他方法可以实现吗? 问题是:
Enum Id {...} //如何推广类型?
SomeClass.someMethod(Id myResource){...}
答案 0 :(得分:0)
不要在库中使用枚举。使用一个接口,应用程序必须按照它想要的方式实现(例如,使用枚举)。
接口应包含库所需的方法。没有更具体的例子,很难提供更具体的答案。
例如:
public interface Identifiable {
/**
* returns the ID of the resource, that must unique among all the resources
*/
public String getId();
}
public class SomeClass
public void someMethod(Identifiable identifiable) {
// some code that uses identifiable.getId()
}
}
在应用程序中:
public enum Id implements Identifiable {
FOO,
BAR;
@Override
public String getId() {
return name();
}
}
答案 1 :(得分:0)
这对你有用吗?
import java.util.*;
enum Resources {
r1("foo"),r2("bar"),r3("baz");
Resources(String string) {
this.string=string;
}
final String string;
}
public class Main {
public static void main(String[] args) {
EnumSet<Resources> set1=EnumSet.of(Resources.r1,Resources.r2); // project 1
EnumSet<Resources> set2=EnumSet.of(Resources.r1,Resources.r3); // project 2
}
}