Java 如何选择要使用的构造函数以及该类<;使用什么类&燃气轮机;类型属于
我有一个类,其中我初始化了静态块中的hashmap。通过传递键,我检索了一个类的值。以便为此类创建对象。我已经使用构造函数类来获取构造函数,并传递参数和创建对象 我有两个hashmap类。要为EchooExpression创建object,我需要传递两个参数,而对于OutExpression类,我只需要传递一个参数(字符串)Java 如何选择要使用的构造函数以及该类<;使用什么类&燃气轮机;类型属于,java,constructor,hashmap,Java,Constructor,Hashmap,我有一个类,其中我初始化了静态块中的hashmap。通过传递键,我检索了一个类的值。以便为此类创建对象。我已经使用构造函数类来获取构造函数,并传递参数和创建对象 我有两个hashmap类。要为EchooExpression创建object,我需要传递两个参数,而对于OutExpression类,我只需要传递一个参数(字符串) 根据键返回的类,我需要执行要获取和实现的构造函数,无论是带一个参数的构造函数还是带两个参数的构造函数 在回声表达式中,构造函数包含两个参数 例如: JXPathExpres
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
,因为这基本上是说“任何类类型”。指对任何类别的类别引用,未设置限制。其他一切都需要显式转换。