gpt4 book ai didi

java - 我如何用java做到这一点?

转载 作者:行者123 更新时间:2023-12-02 00:27:01 25 4
gpt4 key购买 nike

我的字符串包含我需要定义它的类的名称,

// this is the name of language class which i need to define it
String language = "english";

我可以将其定义为:

english eng = new english();

但是这个方法是针对固定名称的,但在我的例子中,字符串“语言”可能会更改为另一个类名称,例如下次可能会这样:

String language = "french";

所以我需要知道一个动态方法来定义“语言”字符串的类,加载任何类而不使用固定的定义方法,例如:

french eng = new french();

最佳答案

你可以,但你不应该。

快速的解决方案是反射(reflection)。您可以执行 Class.forName(className) 并且将找到该类(请注意,它还应该包含一个包)

更好的解决方案是提供另一种创建机制 - 例如工厂,以及所有语言通用的接口(interface)。:

interface Language { .. }

public class English implements Language { .. }
public class French implements Language { .. }

public class LanguageFactory {
private static Map<String, Language> languageRegistry;
public static Language createLanguage(String name) {
return languageRegistry.get(name);
}
public synchronized void init() {
//populate the registry
}
}

(通过调用 .put("english", new English()) 初始化一次注册表

关于java - 我如何用java做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779126/

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