Java 抽象类中的动态抽象类
我对这个类构造有一个问题。我想以某种方式在Super1的构造函数中指定超类Super2的扩展类类型作为参数,但我不知道如何指定 我希望满足以下要求:Java 抽象类中的动态抽象类,java,class,generics,inheritance,abstract,Java,Class,Generics,Inheritance,Abstract,我对这个类构造有一个问题。我想以某种方式在Super1的构造函数中指定超类Super2的扩展类类型作为参数,但我不知道如何指定 我希望满足以下要求: 在dostufwithdostuff()内初始化Super2扩展类的实例 不要将带有Super2实例的参数添加到dostufwithdostuff()中 我认为你的问题有点太深奥了,无法理解你到底想要实现什么。以下工作是否可行(我相信它符合您描述的要求) 抽象类Super1{ 私有类Super3的定义在哪里?是否输入错误?不能直接实例化抽象类,
- 在dostufwithdostuff()内初始化Super2扩展类的实例
- 不要将带有Super2实例的参数添加到dostufwithdostuff()中
我认为你的问题有点太深奥了,无法理解你到底想要实现什么。以下工作是否可行(我相信它符合您描述的要求)
抽象类Super1{
私有类Super3
的定义在哪里?是否输入错误?不能直接实例化抽象类,必须通过实例化子类来实例化抽象类。Super2 super=new Super2(“测试”);不起作用,您可以使用匿名内部类。另外:Super1扩展了Super3,而您没有Super3类。super
是java@Stultuske是的,我知道这一点,这就是为什么我写了“我必须以某种方式在Super1的构造函数中给出扩展类”我可以实例化子类而不是超类。@Jens是的,这只是一个错误使用的示例名称
abstract class Super2 {
Super2(String test) {
}
public void exit() {
}
}
abstract class Super1 {
abstract doStuff(Class<? extends Super2> super);
protected doStuffWithDoStuff() {
Super2 super2 = new Super2("test");
doStuff(super2);
super2.exit();
}
}
class Test1 extends Super2 {
Test1() {
super();
}
public void doStuff() {
}
}
class Test2 extends Super1 {
doStuff(Test1 test) {
test.doStuff();
}
}
abstract class Super1 {
private Class<? extends Super2> super2Type;
protected Super1(Class<? extends Super2> super2Type) {
this.super2Type = super2Type;
}
abstract doStuff(Class<? extends Super2> super);
protected doStuffWithDoStuff() {
Super2 super2 = super2Type.newInstance(); //Error handling omitted for brevity
doStuff(super2);
super2.exit();
}
}