【问题标题】:Is it possible to create the objects of class dynamically?是否可以动态创建类的对象?
【发布时间】:2021-08-18 23:32:51
【问题描述】:
例如,我创建了 10 个类,其中包含一些方法。现在,我想创建一个方法,将这些类名之一作为字符串格式的输入参数并实例化该类。
public void instantiateclass(String Classname)
{
// this method should instantiate the given classname
}
这在java反射中可能吗?还是java中的任何其他概念?
【问题讨论】:
标签:
java
object
dynamic
instantiation
【解决方案1】:
是的,你可以这样做。您可以更改方法以返回Object。
public Object instantiateClass(Class<?> clazz)
{
Object instance = null;
try {
instance = clazz.getDeclaredConstructor().newInstance();
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
| NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
return instance;
}
【解决方案2】:
这可以通过以下代码在 c# 中轻松完成
private static object CreateInstanceByClassName(string className)
{
var assembly = Assembly.GetExecutingAssembly();
var type = assembly.GetTypes()
.First(t => t.Name == className);
return Activator.CreateInstance(type);
}
以上代码假设该类存在于同一个汇编中