在静态初始化程序中的静态初始化程序之外声明的变量

时间:2015-04-27 19:35:06

标签: java jls static-initializer

有没有人可以举一个具体的例子来说明JLS(§8.7)中的以下内容是什么意思?

  

如果在静态初始化程序之外声明的任何类型变量出现在静态初始化程序中的任何位置,则是编译时错误。

造成错误的原因是什么?

1 个答案:

答案 0 :(得分:4)

type variable是该类使用的非限定标识符。类的实例可以使用不同的实际类型替换类型变量。类型变量仅适用于类的实例。因此,它们不能在同一个类的静态上下文中引用。这将是此错误的一个示例:

import java.util.*;
public class Test<N> {
  static { List<N> p = new ArrayList<>(); }
}