我可以创建一个父类是动态的子类吗?例如; 在class A extends B
代码上,我可以B
根据条件更改吗?如果我可以从方法中返回它,该方法的返回类型是什么?我的意思是class A extends getClassAccToCondition()
返回类型。
问问题
142 次
5 回答
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”,你会发现很多更好的例子。
于 2013-01-21T07:34:40.857 回答
0
不,您要扩展的类必须明确说明。
于 2013-01-21T07:20:53.313 回答
0
从技术上讲,它不可能在 java 中实现这一点。但是,我想尝试使用多态性和某种工厂方法模式来解决实际的业务问题。不确定,如果这对您有帮助,但在 java 中无法实现不同的父级。
于 2013-01-21T07:54:19.153 回答
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 {
}
于 2013-01-21T10:19:55.423 回答