首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -如何设计你自己的类型?

Java -如何设计你自己的类型?
EN

Stack Overflow用户
提问于 2010-06-18 21:23:15
回答 5查看 1.3K关注 0票数 2

有没有可能设计自己的Java Type,类似于可扩展的enum

例如,我有一个特定模块使用的用户角色,然后一个子包提供了额外的角色。

在JDK方面会涉及到什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-18 21:56:07

好的,

我要做的是编写一个接口,然后是如何在特定事件中查找要通知的用户的几个实现。正确的实现将在运行时注入,然后它将执行所需的任何操作来找到正确的用户。该实现可以简单地采用参数来配置要查找的组名,然后返回用户列表。

我正在学习更多地使用接口/契约设计。我过去的大多数开发都只有一个实现,所以我认为这是一个没有意义的点,并忘记了那个工具/方法。

谢谢,

沃尔特

票数 1
EN

Stack Overflow用户

发布于 2010-06-18 21:26:02

因为枚举不能被扩展,所以你必须伪造它。

使用受保护的构造函数创建一个类。

然后,您可以在类中创建public static final FakeEnum实例。

代码语言:javascript
复制
public class FakeEnum {

    private String name;
    private Object something;

    protected FakeEnum(String name, Object otherParam) {
        this.name = name;
        this.something = otherParam;
    }

    // public getters

    public static final FakeEnum ONE = new FakeEnum("one", null);
    public static final FakeEnum TWO = new FakeEnum("two", null);
    public static final FakeEnum THRE = new FakeEnum("thre", null);
}

然后你可以扩展它并添加更多的东西,如下所示:

代码语言:javascript
复制
public class ExtendedFakeEnum extends FakeEnum {

    public static final FakeEnum EXTENDED_ONE = new FakeEnum("extended_one", null);
    public static final FakeEnum EXTENDED_TWO = new FakeEnum("extended_two", null);

}
票数 4
EN

Stack Overflow用户

发布于 2010-06-18 21:26:37

可扩展枚举的概念没有意义。枚举用于静态声明将为其自己的类型创建的整个实例集。允许它延长将使这一点不可能得到保证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3069926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档