在静态初始化程序中在静态初始化程序外部声明的类型变量

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<>(); }
}