代码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;
}
答案 0 :(得分:1)
static {
是静态初始化程序块。加载类时,此代码运行一次。
LICENSE
设置为text
的值,该值来自bytes.toString()
。
它将在运行时设置。
答案 1 :(得分:0)
因为它会将值传递给var LICENCE
。该类加载后,该块只执行一次。
但是,DO NOT
编码就像这样。不得在Main Thread
中调用阅读/写作以获取ANR
。