Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态创建类名为字符串的对象_Java - Fatal编程技术网

Java 动态创建类名为字符串的对象

Java 动态创建类名为字符串的对象,java,Java,我试图通过以字符串形式发送类名来动态创建类的对象。我已经在所有的java论坛上搜索过了,但是我没有得到我想要的答案。 这是我的要求, 我有一个名为Agent的类 package somePack; public class Agent{ private String Id; Private String Name; public String getId() { return this.id; } public void setId(String id) {

我试图通过以字符串形式发送类名来动态创建类的对象。我已经在所有的java论坛上搜索过了,但是我没有得到我想要的答案。 这是我的要求, 我有一个名为Agent的类

package somePack;

public class Agent{
  private String Id;
  Private String Name;
  public String getId() {
    return this.id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return this.name;
  }
  public void setName(String name) {
    this.name = name;
  }
}

package somePack;

public class Employee{
  private String Id;
  Private String Name;
  public String getId() {
    return this.id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return this.name;
  }
  public void setName(String name) {
    this.name = name;
  }
}
public class create{
   public static void main(String[] args){
      newCreate("Employee");
      newCreate("Agent");
   }
   public static void newCreate(String name){
      String path="somePack."+name;
      Class cls=Class.forName(path);
      System.out.println("Class Name " + cls.getName());
  }
}
现在我的问题是,cls.getName()给了我类名,但现在我想为该类创建对象,即分别为Employee类和Agent类创建对象,但是如何为它们创建对象呢?传递的字符串可能是来自另一个方法的其他内容,我如何为此类内容创建对象

有人能帮我吗

提前感谢您,

使用

然后你就可以把它交给特工了

Agent agent = (Agent) Class.forName(path).newInstance();
但是现在我想为该类创建对象


然后,如果您不需要使用参数处理构造函数,或者使用或其他方法,请使用该方法。(调用构造函数。)

基于类具有默认构造函数(即没有参数),您可以简单地调用

如果它有参数,它会变得更复杂一些

您必须通过传入预期的参数类类型来获取对相应的
构造函数的引用


一旦你有了它,你就可以调用传递给它相应的对象

Class.forName()查找;那么我如何设置和获取类的值呢?您好,Matthew,谢谢您的回复,但是如果有50多个类,并且基于某些条件,我将发送相关字符串作为参数,那么我如何知道要动态创建哪个类对象呢。也就是说,现在我将它作为“代理”传递,接下来如果我可以传递“Employee”,那么这个方法将如何帮助我生成字符串变量的值作为objecthi Jon,我想为字符串变量的值的类创建一个对象。如果我不知道它是“代理”,它可能是其他东西,那么我如何动态生成它。。。我希望你明白我的问题。。。
Agent agent = (Agent) Class.forName(path).newInstance();