gpt4 book ai didi

java - 如何从 Java 中的枚举返回一个对象?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:10:03 25 4
gpt4 key购买 nike

我有许多实现相同接口(interface)的类。所有这些类的对象都必须在主类中实例化。我正在尝试以一种可以优雅地完成这件事的方式来做这件事(我通过枚举思考)。示例代码:-

public interface Intr {
//some methods
}

public class C1 implements Intr {
// some implementations
}

public class C2 implements Intr {
// some implementations
}

...

public class Ck implements Intr {
// some implementations
}


public class MainClass {

enum ModulesEnum {
//Some code here to return objects of C1 to Ck
FIRST {return new C1()},
SECOND {return new C2()},
...
KTH {return new Ck()};
}

}

现在在上面的示例中,我可以通过一些优雅的方式获取 C1 类到 Ck 类的新对象的实例。或者任何其他更好的机制而不是枚举也将受到赞赏。

最佳答案

enum ModulesEnum {

FIRST(new C1()), SECOND(new C2()); // and so on

private ModulesEnum(Intr intr) { this.obj = intr; }
private Intr obj;

public Intr getObj() { return obj; }

}

希望对您有所帮助。诀窍是为每个枚举添加一个实现。如果要访问对象,请使用 getter。

ModulesEnum.FIRST.getObj();

如果您的Intr 及其实现是包保护,您可以将ModulesEnum 公开以公开实现。这样一来,每个实现只能有一个实例,使它们成为单例,而无需显式使用该模式。

如果您打算为每个实现使用多个实例,您当然也可以使用 Factory

关于java - 如何从 Java 中的枚举返回一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com