【问题标题】: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);
     }
    

    以上代码假设该类存在于同一个汇编中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2021-03-09
      • 2016-03-24
      • 2017-09-21
      • 2011-03-11
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多