gpt4 book ai didi

java - 获取 Foo.java 的一种实现

转载 作者:行者123 更新时间:2023-12-01 17:29:07 25 4
gpt4 key购买 nike

我有Foo.java,它是接口(interface)。

还有很多实现它的类。 Bar1.java、Bar2.java

我在前端有一个方法,如下所示:getBar(String bar)

我可以这样做:

if(bar.equals("Bar1")) {
return new Bar1();
}

但是我可以以某种方式做到这一点吗,每次有新的东西实现 Foo.java ,那么我就不必使用新的 ELSE 语句来更新我的方法。

我认为每个实现都有唯一的 ID 或其他东西,每当我创建它时,我都会将其添加到 BarX.java 中。

有什么建议或想法吗?我想也许我可以使用enum或smthing或任何其他解决方案。

最佳答案

仅供引用:您当然意识到您不应该这样写:

if(bar == "Bar1") {
return new Bar1();
}

你应该这样做:

if("Bar1".equals(bar)) {
return new Bar1();
}

看起来你需要一个工厂(又名虚拟构造函数)。如果您的所有 Foo 实现者都有一个默认构造函数,您可以这样做:

public class FooFactory {

public static Foo create(Class<Foo> clazz) {
return clazz.newInstance();
}

public static Foo create(String className) {
return create(Class.forName(className));
}
}

有异常需要处理;我没有时间为你拼写它们。你应该明白这个想法。您需要做的就是编写一个新类,您的工厂就可以处理它。

如果还有其他构造函数,只需使用参数和附加调用来详细说明主题即可。这应该可以帮助您入门。

关于java - 获取 Foo.java 的一种实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12728430/

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