我有以下问题.我想要一个名为MessageField的广泛抽象类型. MessageField的运行时使用是携带String值;该类型的其余部分应该是一堆不变的定义和行为. MessageField的每个子类都应该是一组定义类型的常量最终成员,如果需要,还可以覆盖其他行为方法.
例如:
public abstract class MessageField {
//whatever needs to go here to make this work
//methods that define behavior
//e.g. public int getFieldId() { return fieldId; }
}
public class TypeOne extends MessageField {
public final int fieldId = 1; //type defining member
public final String tag = "->"; //type-defining member
public String fieldValue; //freely settable/gettable
//change any behavior if necessary
}
public class TypeTwo extends MessageField {
public final int fieldId = 2;
public final String tag = "++";
public String fieldValue;
}
public class TypeThree extends MessageField {
public final int fieldId = 3;
public final String tag = "blah";
public String fieldValue;
}
应该强制每个子类在写入时为fieldId和tag定义一个值.我猜在概念上这些是每种类型的静态最终常量,但是它如何与继承一起工作?我需要所有各种类型以符合可以传递的一种广泛的总体类型.
也许继承不是实现这种模式的最佳方式,但如果没有,那是什么?如果继承是这样做的方式,它将如何做?
谢谢!