我对Java相当陌生,对此行为感到有些困惑
public class MyBase<T> {
static int id;
}
public class DerA extends MyBase<DerA> {
}
public class DerB extends MyBase<DerB> {
}
我希望
DerA.id
和Derid
是两个不同的static
变量。但是它似乎正在共享同一个!!!这种行为对我来说毫无意义-它有两种类型。 最佳答案
泛型与此无关。与C ++中的模板不同,运行时只有一个类MyBase
(称为Type Erasure),因此它只有一个静态变量。static
变量仅属于定义它们的类。两个导数都没有此变量。您想要的被称为(用其他语言,例如Smalltalk)类变量,而Java没有这种东西。