gpt4 book ai didi

java - 当我知道Java中的类名称为字符串时,如何获取子类实例?

转载 作者:行者123 更新时间:2023-12-03 03:20:50 26 4
gpt4 key购买 nike

我想在运行时创建 java 类的实例(它们都扩展父类(super class))。

这里有一些示例类:

class Super {
}

class FirstSub extends Super {
}

class SecondSub extends Super {
}

我知道类名是字符串:

String name = "SubClassName";

这是我的第一个方法:

Super foo;
if (FirstSub.class.getSimplename().equals(name)) {
foo = new FirstSub();
}
if (SecondSub.class.getSimplename().equals(name)) {
foo = new SecondSub();
}

如何以更复杂的方式获取“子类”之一的实例?

编辑:此外,我想将 foo 转换为 SubClassName

最佳答案

Class myClass = Class.forName(name);
Object o = myClass.newInstance();
Super instance = (Super)o;
//Subclass instance2 = (Subclass)o;

动态地将变量引用转换为子类是不可能的,也是不值得的。如果在这个地方你的对象可能是 FirstSub 或 SecondSub 那么这两个对象都应该提供一些给定的功能(方法)。您应该在父类(super class)中定义一些(例如抽象)方法(或使其成为接口(interface))。然后,如果你有这样的行:

Super instance = (Super)o;

其中 o 是 Super 子类的实例,然后调用您的方法将调用子类上的方法。这就是多态性之美

关于java - 当我知道Java中的类名称为字符串时,如何获取子类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7239711/

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