java - 在静态初始值设定项外部声明的类型变量在静态初始值设定项内

标签 java jls static-initializer

有人可以举一个具体的例子来说明 JLS (§8.7) 中以下文本的含义吗?

It is a compile-time error if [...] any type variable declared outside the static initializer, appears anywhere within a static initialiser.

导致错误的原因是什么?

最佳答案

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

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

关于java - 在静态初始值设定项外部声明的类型变量在静态初始值设定项内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904418/

相关文章:

Java:构造Locale对象时NullPointerException导致的ExceptionInInitializerError

Java枚举反向查找最佳实践

java - Spring:如何将 4 个 bean 中的任何一个注入(inject)另一个 bean

java - 如何在 MuPDF 中实现页面 curl

java - Java中的 'program order'允许重新排序吗?

java - 嵌套类和成员类是一回事吗?

java - Return 和 Break 语句之间的区别

java - Android - 单击发送到其他 Activity 的图像时应用程序崩溃

java - 测试 final 字段的初始化安全性

java - 如何检查一个类是否被初始化?