Java 允许您更改扩展类的特定变量值。
这是因为,静态变量在同一类的所有对象之间共享。
它是属于类而不属于对象(实例)的变量。
因此,当扩展父类的静态变量时,实际上并不是扩展类的一部分,而是可以访问(只要它们不是私有的)。
此外,这可用于执行以下操作:
这样做的一个用途是根据与使用 instanceof 相对的 STATIC 整数来识别类。这可以进一步结合一个开关来改变基于对象类型的行为。
因此,在最基本的示例中,假设我们要创建一个表示 TYPE 的变量。
class A
{
public static final int NODE_TYPE = NODE_PERSON;
public static final int NODE_PERSON = 0;
public static final int NODE_CAR = 1;
}
class B extends Class A
{
public static int NODE_TYPE = NODE_CAR;
}
这已在许多框架中使用,包括 Eclipse 抽象语法树:
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTNode.html
您将看到代表不同节点类型的静态整数列表。