java - 对静态块的渴望初始化
问题描述
当我试图更好地理解事物时,我意识到我知道的有多少。对不起,如果这听起来像一个简单或愚蠢的问题。
我们真的需要静态块吗,如果它仅用于初始化静态变量而没有在块中编码任何其他逻辑。我们可以直接对那些静态变量进行急切的初始化,对吧?因为据我了解,静态块在类加载时执行,静态变量的初始化也是如此。如果它只是用于变量初始化,那么让静态变量急切初始化是不够的,而不是为此拥有一个专有的静态块。
例如,采用以下代码,并将其称为案例 1。
static String defaultName = null;
static String defaultNumber = 0;
static {
defaultName = "John";
defaultNumber = "+1-911-911-0911";
}
和下面的代码,称之为案例2。
static String defaultName = "John";
static String defaultNumber = "+1-911-911-0911";
因此,不要在案例 1 和案例 2 中给出相同的结果或性能。在这种情况下(出于任何目的,例如将所有数据初始化在一个地方左右),静态块是否完全必要,而案例 2 的目的是清晰明了?我错过了什么?
解决方案
我认为如果你需要初始化一个可用的起始值的静态变量,你可以使用Case 2,而如果你需要根据一些逻辑操作来初始化一个变量,你可以把它放在一段静态代码中,然后执行他的通过它初始化
推荐阅读
- c# - 在已发布的 ASP.Net Core API 中创建和保存文件不起作用
- javascript - 放入 carousal 时图像被拉伸
- sql - 分层列标签 SQL
- php - 如何在 laravel 中设置未来的软删除
- javascript - 有没有办法在添加时仅使用带有数字索引的 javascript 添加 DOM 元素?
- python - 如何在 Pandas Python 中按 id 对行进行排名
- selenium-ide - 我如何从搜索框中获取值该框是自动完成的
- php - 在 Doctrine Query builder Query 中调用自定义 MySql 函数
- sharepoint - 使用图形 api 创建站点
- javapos - ACE 的 IBM 4690 SI AEF 扩展