枚举概括?

时间:2012-02-04 08:12:23

标签: java android

在我的项目中,我有两块代码,我想将它们分开以使一部分成为库。昨天,当我试图将它分开时,我注意到我的新库和我的应用程序层之间存在非常强大的连接,这是由Enum类型引起的。当然我可以简单地将Enum更改为int的主要类型或String,这样我就可以在应用程序层中定义这些值,但通过这样做,我将摆脱我想要的类型检查机制具有。如果不放弃Java / Android的类型检查机制,还有其他方法可以实现吗? 问题是:

应用层

Enum Id {...} //如何推广类型?

图书馆图层

SomeClass.someMethod(Id myResource){...}

2 个答案:

答案 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
    }
}