此代码是否将值传递给var?

时间:2016-04-25 02:27:04

标签: java android

以下代码来自https://github.com/NanoHttpd/nanohttpd/blob/master/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java

代码static {mimeTypes(); ...}是否将值传递给var LICENSE?这是有效的java语法吗? var LICENSE何时通过值?运行时或编译时?

/**
 * The distribution licence
 */
private static final String LICENCE;
static {
    mimeTypes();
    String text;
    try {
        InputStream stream = SimpleWebServer.class.getResourceAsStream("/LICENSE.txt");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int count;
        while ((count = stream.read(buffer)) >= 0) {
            bytes.write(buffer, 0, count);
        }
        text = bytes.toString("UTF-8");
    } catch (Exception e) {
        text = "unknown";
    }
    LICENCE = text;
}

2 个答案:

答案 0 :(得分:1)

static {是静态初始化程序块。加载类时,此代码运行一次。

LICENSE设置为text的值,该值来自bytes.toString()

它将在运行时设置。

答案 1 :(得分:0)

因为它会将值传递给var LICENCE。该类加载后,该块只执行一次。

但是,DO NOT编码就像这样。不得在Main Thread中调用阅读/写作以获取ANR