变量声明后的静态块是什么



我以前从未见过这个 - 它叫什么?这是文件开头的类级别变量。

为了清楚起见,我指的是变量后面的static {}

private static final UriMatcher URI_MATCHER;
    static {
        URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
        URI_MATCHER.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, SEARCH);
        URI_MATCHER.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", SEARCH);
        URI_MATCHER.addURI(AUTHORITY, "books", BOOKS);
        URI_MATCHER.addURI(AUTHORITY, "books/#", BOOK_ID);
    }

它是一个静态初始化块。它可以在类内的任何位置(但在方法外部)声明,但按照惯例,它通常紧跟在正在初始化的静态变量之后。它在 Java 语言规范第 §8.7 节中指定。

顾名思义,它通常用于在类加载时初始化类中静态属性的状态。从 Java 教程:

静态初始化块是括在大括号 { } 中的普通代码块,前面是 static 关键字 (...)一个类可以有任意数量的静态初始化块,它们可以出现在类体中的任何位置。运行时系统保证静态初始化块按照它们在源代码中出现的顺序调用。

用于

初始化静态变量。如您所知,您不能在类的构造函数中初始化它们,因此您可以使用static块举个例子:您想用值 1、2、3 等填充静态数组。有两种方法:

public class Main {
    static int[] array1 = {1, 2, 3, 4 ...};
    static int[] array2;
    static {
        array2 = new int[N];
        for (int i = 0; i < N; i++) {
            array2[i] = i;
        }
    }
}
这是

代码的静态部分,在声明静态变量URI_MATCHER后对其进行初始化

这是一个静态初始化块。它允许您"设置"静态字段,这在类实例的方法中无法正确完成。

它只是一个静态初始化块。退房: http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

最新更新