static-block相关内容

继承中的静态块 vs 初始​​化块 vs 构造函数

我找到了这个例子,我想了解它背后的逻辑?构造函数和静态块以及初始化块如何在继承中工作?分别在哪个阶段被调用? 公共类父{静止的 {System.out.println("我是家长 3");}{System.out.println("我是父母 2");}公共父(){System.out.println("我是父母 1");}}公共类儿子扩展父{静态 {System.out.println("我是儿 ..
发布时间:2022-01-24 16:24:01 Java开发

与 Java 静态块等效的 C++ 习语是什么?

我有一个包含一些静态成员的类,我想运行一些代码来初始化它们(假设这段代码不能转换为简单的表达式).在 Java 中,我会这样做 class MyClass {静态 int myDatum;静止的 {/* 做一些设置 myDatum 的计算 */}} 除非我弄错了,C++ 不允许这样的静态代码块,对吧?我应该怎么做? 我想要以下两个选项的解决方案: 在加载进程时(或加载具有此类的 D ..
发布时间:2022-01-18 23:18:12 Java开发

什么时候执行一个类的静态块?

我有 2 个罐子,我们称它们为 a.jar 和 b.jar. b.jar 依赖于 a.jar. 在一个.jar 中,我定义了一个类,我们称之为StaticClass.在 StaticClass 中,我定义了一个静态块,调用了一个名为“init"的方法: 公共类静态类{静止的 {在里面();}公共无效静态初始化(){//在这里做一些初始化}} 在 b.jar 中,我有一个 main, ..
发布时间:2022-01-16 11:47:53 Java开发

静态初始化块

据我所知,如果不能在一行中完成,“静态初始化块"用于设置静态字段的值. 但我不明白为什么我们需要一个特殊的块.例如,我们将一个字段声明为静态(没有赋值).然后编写几行代码,生成上面声明的静态字段并为其赋值. 为什么我们需要在一个特殊的块中使用这些行,例如:static {...}? 解决方案 非静态块: {//做点什么...} 被调用每次构造类的实例.静态块只会在类本身初始 ..

静态初始化块

据我所知,如果不能在一行中完成,“静态初始化块"用于设置静态字段的值. 但我不明白为什么我们需要一个特殊的块.例如,我们将一个字段声明为静态(没有赋值).然后编写几行代码,生成上面声明的静态字段并为其赋值. 为什么我们需要在一个特殊的块中使用这些行,例如:static {...}? 解决方案 非静态块: {//做点什么...} 被调用每次构造类的实例.静态块只会在类本身初始 ..

在Java中的静态块中创建对象的优缺点是什么?

对于某些Java专家来说,这个问题可能是个错误.但是我想知道为什么我们要像main这样的静态方法而不是static块中创建对象.我知道,如果我们在静态块中实例化它,并且如果不进一步使用它,它将不必要地创建该对象.使用此方法还有其他需要注意的事项吗?我们可以将其与单例模式相关吗? 例如: 公共类MyClass {静止的 {AnotherClass对象=新的AnotherClass();//在 ..
发布时间:2021-05-16 19:10:22 Java开发

“何时加载类”是什么意思?其实是什么意思?

据说在Java中的静态块在加载该类时仅运行一次。但这实际上是什么意思? JVM(Java虚拟机)在什么时候加载类? 当调用该类中的main方法时是吗?并且是在main方法开始执行时是否也加载了同一类的所有超类吗? 考虑到A扩展了B且B扩展了C。静态块。如果A具有main方法,那么执行静态块的顺序是什么? 解决方案 这在执行部分。即: 类的初始化包括执行其静态初始化程序和该 ..
发布时间:2020-10-02 03:28:06 Java开发

链接时,“获取所需内容"和“获取所需内容"之间是否有关联?和“全部抓取" (-Wl,-整体存档)?

我有一个包含一些静态初始化代码的库,需要在main()之前运行.如果您只将所有翻译单元一起编译,那么一切都很好,但是如果我提供了一个静态库(.a文件)并让用户将其应用程序链接到它,则它不起作用-链接器只是忽略了这样做的符号我的静态初始化. 或者,如果我为GCC指定了-Wl,--whole-archive选项,即为GNU链接指定了--whole-archive选项,则可以使链接程序在静态库中提 ..
发布时间:2020-04-30 08:34:34 C/C++开发

什么是Scala相当于Java的静态块?

什么是Scala相当于Java的静态块? 解决方案 构造函数(即正文)中的代码伴随对象不与Java类的静态初始化程序块中的代码完全相同。在下面的示例中,我创建了A的实例,但不会进行初始化。 scala>对象测试{A类;对象A {println(“A.init”)}} 定义模块测试 scala> new Test.A res3:Test.A = Test $ A @ 3b ..
发布时间:2018-12-26 13:22:44 Java开发

在Java中模拟静态块

我对Java的座右铭是“仅仅因为Java有静态块,它并不意味着你应该使用它们。”除了笑话之外,Java中有很多技巧会让测试成为一场噩梦。我最讨厌的两个是匿名类和静态块。我们有很多使用静态块的遗留代码,这些是我们编写单元测试的烦恼之一。我们的目标是能够为依赖于此静态初始化的类编写单元测试,并且代码更改最少。 到目前为止,我对同事的建议是将静态块的主体移动到私有静态方法中并将其命名为 stati ..
发布时间:2018-12-25 20:20:04 Java开发

如何在Java中初始化ThreadLocal对象

我遇到了一个问题,我正在创建一个ThreadLocal并使用新的ThreadLocal初始化它。问题是,我在概念上只想要一个持久的列表,这个列表会延续线程的生命,但我不知道是否有办法在Java中初始化每个线程的东西。 例如我想要的是: ThreadLocal static { myThreadLocalVariable.set(new ArrayList()) ..
发布时间:2018-12-07 17:59:39 Java开发

什么是与C ++静态块等效的C ++习惯用法?

我有一个带有一些静态成员的类,我想运行一些代码来初始化它们(假设这段代码不能转换成简单的表达式)。在Java中,我只会这样做 class MyClass { static int myDatum; static { / *做一些计算设置myDatum * / } } 除非我弄错了,否则C ++不允许这样的静态代码块,对吧?我应该做什么呢? 我想要 ..
发布时间:2018-11-27 12:59:13 Java开发