gpt4 book ai didi

java - 从字符串加载类

转载 作者:IT老高 更新时间:2023-10-28 21:14:13 24 4
gpt4 key购买 nike

我想通过字符串的值来实例化一个类。我发现了几个教程,其中展示了几种方法。该类必须继承自某个接口(interface),ImplementMe,该接口(interface)有一个称为 runMe() 的特殊方法。所以这就是我尝试过的:

ImplmentMe a =
(ImplementMe) ImplementMe.class
.getClassLoader()
.loadClass("my.package.IImplementedYou")
.newInstance();
a.runMe();

它有效,但它太丑了。我至少预计不需要类型转换。请告诉我有更好的方法。

最佳答案

不,没有更好的方法(按设计)。您不应该这样做,Java 被设计为一种类型安全的语言。但是,我可以理解你有时需要做这样的事情,为此你可以创建一个这样的库函数:

public <T> T instantiate(final String className, final Class<T> type){
try{
return type.cast(Class.forName(className).newInstance());
} catch(InstantiationException
| IllegalAccessException
| ClassNotFoundException e){
throw new IllegalStateException(e);
}
}

现在您的客户端代码至少可以在不强制转换的情况下调用此方法:

MyInterface thingy =
instantiate("com.foo.bar.MyInterfaceImpl", MyInterface.class);

关于java - 从字符串加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865153/

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