java - Java 中 System 类的 out 对象是什么时候初始化的?
问题描述
修改为 as 的变量final
必须在声明或执行构造函数时进行初始化。
我在System Class File中查找,发现out
Object在方法中被初始化,这个private static void initializeSystemClass()
方法是什么时候调用的?
解决方案
JVM
根据类中的注释调用此方法System
。在下面添加了部分评论:
public final class System {
/* register the natives via the static initializer.
*
* VM will invoke the initializeSystemClass method to complete
* the initialization for this class separated from clinit.
* Note that to use properties set by the VM, see the constraints
* described in the initializeSystemClass method.
*/
private static native void registerNatives();
static {
registerNatives();
}
/** Don't let anyone instantiate this class */
private System() {
}
推荐阅读
- windows - 来自 Apps&Features 的 InnoSetup 卸载程序 UAC
- android - Android - 改造
- node.js - 如何在模块中构建nodejs应用程序?
- c# - .Net 发布生成的 exe 的内容是什么?
- php - 有没有办法使用 PHP 在 UPDATE 语句中获取价值?
- powershell - Powershell 导入模块无法正常工作
- mongodb - 使用带有 upsert 的 bulkwrite 时,Mongo 的性能会下降
- python - 无法使用 LDP 身份验证提供程序对 Askbot 进行身份验证
- angular - 使用 formData 向 HTTP 发送数据时面临的问题
- ios - 以编程方式禁用键盘的 iOS QuickPath 功能