h********m 发帖数: 116 | 1 假设我有个abstract class,和两个不同的子类。根据enum type,决定生成哪个子类:
public abstract class Base {
enum type {c1, c2}
public Base(type){
switch case(c1) return Child1(xxx);
case(c2) return Child2(xxx);
}
}
public class Child1 extends Base
public class Child2 extends Base
可是具体生成instance的时候应该怎么做呢?下面这个语句会报错abstract class
cannot be instantiated:
Base newInstance = new Base(c1); | j**********r 发帖数: 3798 | 2 Use a factory method.
public static Base create(type);
Base.create(type)
类:
【在 h********m 的大作中提到】 : 假设我有个abstract class,和两个不同的子类。根据enum type,决定生成哪个子类: : public abstract class Base { : enum type {c1, c2} : public Base(type){ : switch case(c1) return Child1(xxx); : case(c2) return Child2(xxx); : } : } : public class Child1 extends Base : public class Child2 extends Base
|
|