Java 如何选择要使用的构造函数以及该类<;使用什么类&燃气轮机;类型属于

Java 如何选择要使用的构造函数以及该类<;使用什么类&燃气轮机;类型属于,java,constructor,hashmap,Java,Constructor,Hashmap,我有一个类,其中我初始化了静态块中的hashmap。通过传递键,我检索了一个类的值。以便为此类创建对象。我已经使用构造函数类来获取构造函数,并传递参数和创建对象 我有两个hashmap类。要为EchooExpression创建object,我需要传递两个参数,而对于OutExpression类,我只需要传递一个参数(字符串) 根据键返回的类,我需要执行要获取和实现的构造函数,无论是带一个参数的构造函数还是带两个参数的构造函数 在回声表达式中,构造函数包含两个参数 例如: JXPathExpres

我有一个类,其中我初始化了静态块中的hashmap。通过传递键,我检索了一个类的值。以便为此类创建对象。我已经使用构造函数类来获取构造函数,并传递参数和创建对象

我有两个hashmap类。要为EchooExpression创建object,我需要传递两个参数,而对于OutExpression类,我只需要传递一个参数(字符串)

  • 根据键返回的类,我需要执行要获取和实现的构造函数,无论是带一个参数的构造函数还是带两个参数的构造函数

  • 在回声表达式中,构造函数包含两个参数

  • 例如:

    JXPathExpression check=newjxpathexpression(字符串表达式,类类型)
    
    String属于String.class,但class type参数也属于哪个类?这样我就可以用它来获取构造函数

    public class ExampleFactory {
    
        private static HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>();
    
        static
        {                   
            hmap.put("echo", EchoExpression.class);         
            hmap.put("Out", OutExpression.class);                       
        }
    
        public void getExpo(String key,String expression)
          {
            Class aClass =map.get(key);
    
    //Constructor implementation for OutExpression where only one argument string is passed
    
            Constructor constructor = aClass.getConstructor(new Class[]{String.class});
    
            Object object= constructor.newInstance(expression);
    
    //Need constructor for passing two arguments string and class<?> for EchoExpression
    
            return null;        
          }                
    }
    
    公共类示例工厂{
    私有静态HashMap>();
    静止的
    {                   
    hmap.put(“echo”,echocexpression.class);
    hmap.put(“Out”,OutExpression.class);
    }
    public void getExpo(字符串键、字符串表达式)
    {
    类aClass=map.get(key);
    //仅传递一个参数字符串的OutExpression的构造函数实现
    构造函数=aClass.getConstructor(新类[]{String.Class});
    Object=constructor.newInstance(表达式);
    //需要构造函数为EchoExpression传递两个参数string和class
    返回null;
    }                
    }
    
    也许你要找的是Class.Class,比如:

    Constructor constructor = aClass.getConstructor(new Class[]{String.class, Class.class});
    

    对于这种情况,您应该在所有情况下都尝试使用统一的构造函数参数,或者使用一种方法来存储每个类的参数

    现在回答你的问题<代码>类是对未知类的引用。基本上对任何阶级都适用。当使用它时,它或多或少等于
    ,因为所有类都以
    对象
    为父类

    要使用具有多个参数的构造函数,首先需要获取fitting构造函数。此时,已经可以获取在类不支持具有此参数配置的实例时发生的错误。 获取构造函数的工作方式如下:

    aClass.getConstructor(new Class[]{String.class, Object.class, ...});
    constructor.newInstance(theString, theObject, ...);
    这适用于任意多个参数类型。创建类的新实例的工作方式如下:

    aClass.getConstructor(new Class[]{String.class, Object.class, ...});
    constructor.newInstance(theString, theObject, ...);
    函数
    newinstance
    根据需要实现尽可能多的参数。因此,取决于所请求的构造函数需要多少个参数,
    newInstance
    函数才能使用它


    不管你想要什么。。。也许是一个建议:也许这是一个不使用反射加载新对象的选项,而是通过存储这些对象的实例并返回使用复制构造函数或
    clone
    方法创建的对象的副本。在许多情况下,这不太难运行。

    Hi实际上,在我的例子中,类类型指的是类的返回类型。例如:类类型-->Boolean.classobject.class的值对我来说不合适。你能用一些例子来解释你的建议吗?你必须使用
    Class
    ,因为这基本上是说“任何类类型”。指对任何类别的类别引用,未设置限制。其他一切都需要显式转换。