gpt4 book ai didi

java - 谁能告诉我类中静态 block 有什么用?

转载 作者:行者123 更新时间:2023-12-02 07:38:01 27 4
gpt4 key购买 nike

public class myclass{ 

static{

//some statements here

}

//some variables declared here
//some functions defined here
}

最佳答案

这是一个静态初始化器。与实例初始值设定项 ( §8.6 ) 类似,您可以在加载时使用它来初始化您的。它不是显式“调用”的;它会在加载 class 时按文本顺序自动执行(保证稍后在初始化期间执行文本中稍后出现的 static 初始化程序)。

您可以使用static初始化器来:

  • 初始化一些静态字段
  • 执行一些其他一次性计算,可能需要 try-catch block ,记录与加载相关的事件,确保 Java 的断言是启用等。

有一些警告,例如类可以被重新加载,并且通常有其他编写它的方法(例如重构为私有(private)静态命名方法),但使用静态初始化器是一个选项。

引用文献

相关问题

这些问题讨论了静态和实例初始值设定项用法的各个方面:

<小时/>

示例用法:要求启用断言

以下是 Java Language Guide for Programming With Assertions 中规定的惯用语确保在运行时启用断言:

Requiring that Assertions are Enabled

Programmers of certain critical systems might wish to ensure that assertions are not disabled in the field. The following static initialization idiom prevents a class from being initialized if its assertions have been disabled:

static {
boolean assertsEnabled = false;
assert assertsEnabled = true; // Intentional side effect!!!
if (!assertsEnabled)
throw new RuntimeException("Asserts must be enabled!!!");
}

Put this static-initializer at the top of your class.

通过将此代码段放入类的static 初始值设定项中,该代码将成为加载类时首先执行的操作之一,然后再创建该类的任何实例。代码本身会检查 Java 断言是否已启用,如果未启用,则抛出 RuntimeException

另请参阅

相关问题

关于java - 谁能告诉我类中静态 block 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com