gpt4 book ai didi

Java:使用 Class.forName 动态获取自身的新实例

转载 作者:行者123 更新时间:2023-11-29 03:47:31 25 4
gpt4 key购买 nike

假设我有一个名为 Dog 的类,它是 Animal 的一个子类

我有一个方法需要根据字符串参数创建特定动物子类的实例

public void createAnimalType(String animalType) {

Class clazz = Class.forName(animalType);

//Check if animalType equals Dog, or Cat, or Fox, etc
// Example
Dog dog = (Dog) clazz.newInstance();
...

在这种情况下,有没有一种方法可以在不显式转换到子类(狗)的情况下创建其自身的实例(狗、猫等,非动物类型)?

我可能遗漏了一个更好的多态性点(比如我为什么要这样做......应该将它转换为 Object 或 Anmial :-))

感谢您帮助我在这方面变得聪明。

最佳答案

如果有一个无参数的构造函数,你可以使用getClass().newInstance() .

getClass()在父类(super class)中使用时将为您提供实际类 this ,例如 Dog在你的例子中。

你的整个方法会变成:

public Animal createAnimal() {
return getClass().newInstance();
}

关于Java:使用 Class.forName 动态获取自身的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com