我可以创建父类是动态的子类吗?例如; class A extends B
代码,我可以根据条件更改B
吗?如果我可以从方法中返回它,那么方法的返回类型是什么?我的意思是class A extends getClassAccToCondition()
返回类型。Java继承;从可变类型延伸
1
A
回答
0
我决定使用一种像工厂模式一样的简单多态性变体。它会为我工作,我认为。感谢您的回答。
public class Main {
public static I getClassBelongToCondition(boolean Condition) {
if (Condition) {
return new A();
} else {
return new C();
}
}
}
interface I {
}
class A extends B implements I {
}
class C extends D implements I {
}
class B {
}
class D {
}
0
不,您正在扩展的类必须明确说明。
2
由于其他答案已经说这是不可能的。
对于这种问题,您可以使用工厂模式。如果你有一个 类层次结构是这样的:
class SuperType { ... }
class SubType1 extends SuperType {...}
class SubType2 extends SuperType {...}
你可以有一个工厂这样的:
class Factory {
public static SuperType create (Condition cond) {
if(cond.matchForType1())
return new SubType1();
else
return new SubType2();
}
}
可以比通过Factory.create(<condition that match for the required type>)
调用此方法。
如果您搜索“工厂模式”+“java”,您会发现很多 更好的示例。
0
从技术上说,它不可能在java中实现这一点。但是,我想尝试使用多态性和某种工厂方法模式来解决实际业务问题。不确定,如果这对你有帮助,但在java中不能实现不同的父项。
0
您不能在编译时定义一个不是静态类型的类。 但是,您可以在运行时生成类,请看javassist。这就是说,代码生成不是唯一的选择。如果您不需要动态超类,但只需要接口,则可以使用dynamic proxies。
相关问题
- 1. Java继承 - implentation和延伸
- 2. c + +延伸继承功能
- 3. 从基类演变为可继承类继承类
- 4. JAVA:泛型类继承和泛型类型继承
- 5. JPA继承和复合主键延伸
- 6. 什么有关涉及继承Java泛型和泛型的用处延伸自
- 7. Java - 从接受泛型的类继承?
- 8. Java继承返回类型
- 9. Java继承和可变
- 10. 从数据类型继承
- 11. 从Java类继承的Kotlin类是否也从Any继承?
- 12. 从类继承变量
- 13. java继承:区分继承类的类型
- 14. 多变模型的延伸
- 15. Java继承类
- 16. 类继承java
- 17. Java类继承
- 18. 类型继承
- 19. 改变继承类的属性类型
- 20. Java泛型:创建延伸的类对象集合可丢失
- 21. Java泛型继承
- 22. 我可以从泛型类继承而不指定类型吗?
- 23. 类可以从“参数”类继承吗? (有条件继承)
- 24. 继承Java子类
- 25. Java超类继承
- 26. 类型继承与表继承
- 27. 继承泛型类
- 28. FlowJS:类型继承
- 29. 习惯从类型继承元类吗?
- 30. 类变量继承
你看过java中的泛型? – Gleeb
您不能在运行时动态定义超类,它们必须明确定义。你做这件事的原因是什么?也许还有另一种选择。 –
这是关于这个问题; http://stackoverflow.com/questions/14399843/abstractregionpainter-java-7-dynamic-import – rdonuk