具有多个派生的Java泛型

exc*_*bur 0 java static

我对java很新,对这种行为有点困惑

public class MyBase<T> {
static int id;
}

public class DerA extends MyBase<DerA> {
}

public class DerB extends MyBase<DerB> {
}
Run Code Online (Sandbox Code Playgroud)

我期望DerA.idDerid成为两个不同的static变量.但似乎是在分享同一个!这种行为对我来说毫无意义 - 它有两种不同的类型.

Ela*_*zar 5

仿制药与此无关; 与C++中的模板不同,您MyBase在运行时只有单个类(称为类型擦除),因此它只有一个静态变量.

static变量只属于定义它们的类.这两个衍生品都没有这个变量.你想要的是(在其他语言中,如Smalltalk)类变量,而Java没有这样的东西.