当前位置: 首页 > 面试题库 >

如何使用反射在构造函数中使用参数创建类的实例?

陶柏
2023-03-14
问题内容

例如:

public class Test {

    public static void main(String[] args) throws Exception {
        Car c= (Car) Class.forName("Car").newInstance();
        System.out.println(c.getName());
    }
}

class Car {
    String name = "Default Car";
    String getName(){return this.name;}
}

清除代码。

但是,如果我添加带有参数的构造函数,则如下所示:

public Car(String name)
{this.name = name;}

我懂了: java.lang.InstantiationException

因此,不,我不知道如何通过构造函数传递参数。

请帮忙。


问题答案:

您需要说出您要使用pass it参数的构造函数

Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");


 类似资料:
  • 我想有一个java中的构造函数参数化一个类来运行这个类,类似于这个 其中classToRun可能的类没有共同的祖先,但都有方法someStaticMethod。 但也存在一些问题,比如内部类不能有静态方法,类不能被转换为类,等等。 有一些用类方法参数化的解决方案,如 如何在Java中传递类作为参数? 在java中将类作为参数传递给方法 但对建造者来说不是。 这样做的正确解决方案是什么?

  • 问题内容: 运行以下代码: 我得到了错误: 为什么是这样? 问题答案: 构造函数类的newInstance()方法采用一个对象数组。数组中的每个项目都是您要调用的构造函数的参数。您的类的构造函数需要一个对象数组,因此您需要在传递给新实例方法的数组内有一个对象数组

  • 问题内容: 如何使用反射在Java中创建通用的参数化类? 我有 我需要一个实例。 我尝试了 但找不到可以让我获取适当​​类型的实例的语法,例如说 那么,我该怎么做呢? 问题答案: Java使用基于擦除的仿制药(即,类型参数是在运行时,例如擦除,并且被视为在运行时是同一类型)。由于反射本质上是运行时功能,因此根本不使用或不涉及类型参数。 换句话说,当您使用反射时,您只能实例化原始类型(,不能实例化)

  • 所以我正在我的Java项目(Google Guice)中实现一个依赖注入框架,一切都很好,我喜欢它,但是有一个小问题;我想为我的主项目的类创建一个静态实例(实例化依赖项等)。但是我不知道使用Guice实例化它的任何方法,我不能手动实例化它,因为我在它的构造函数中使用DI(我在构造函数中有对象),这意味着我不能访问实例化该类所需的类的非静态变量。我试着使用一个提供者,但是我真的不明白在哪里绑定它,因

  • 问题内容: 可以使用反射在抽象祖先类中创建派生类的实例吗? } 问题答案: 你可以这样做 版画 一种更常见的模式是使用Cloneable 版画 但是,应避免使用两者之一。通常,还有另一种方法可以满足您的需求,因此基础不会隐式地依赖于派生。

  • 问题内容: 有没有一种方法可以给定类名称(动态)来创建特定类的实例,并将参数传递给其构造函数。 就像是: 的构造函数的参数在哪里? 问题答案: 是的,类似: 当然,这仅适用于单个字符串参数,但是你可以轻松地对其进行修改。 注意,类名必须是完全合格的,即包括名称空间。对于嵌套类,你需要使用美元(因为这是编译器使用的美元)。例如: 要获得该Class对象,你需要。