在静态初始化程序中在静态初始化程序外部声明的类型变量
Type variable declared outside the static initialiser within the static initialiser
谁能举一个具体的例子来说明 JLS (§8.7) 中以下文本的含义?
It is a compile-time error if [...] any type variable declared outside the static initializer, appears anywhere within a static initialiser.
导致错误的原因是什么?
A type variable
是 class 使用的非限定标识符。 class 的实例可能有不同的实际类型替代类型变量。类型变量仅适用于 class 的实例。所以,它们不能在同一个 class 的静态上下文中被引用。这将是此错误的示例:
import java.util.*;
public class Test<N> {
static { List<N> p = new ArrayList<>(); }
}
谁能举一个具体的例子来说明 JLS (§8.7) 中以下文本的含义?
It is a compile-time error if [...] any type variable declared outside the static initializer, appears anywhere within a static initialiser.
导致错误的原因是什么?
A type variable
是 class 使用的非限定标识符。 class 的实例可能有不同的实际类型替代类型变量。类型变量仅适用于 class 的实例。所以,它们不能在同一个 class 的静态上下文中被引用。这将是此错误的示例:
import java.util.*;
public class Test<N> {
static { List<N> p = new ArrayList<>(); }
}