380得票9回答
静态初始化代码块和非静态初始化代码块有什么区别?

我的问题是关于static关键字的一个特定用法。可以使用static关键字覆盖类中不属于任何函数的代码块。例如,以下代码可以编译: 我的问题是关于static关键字的一个特定用法。可以使用static关键字来覆盖类中不属于任何函数的代码块。例如,以下代码可编译:public class Te...

144得票6回答
Java静态初始化器是否线程安全?

我正在使用静态代码块来初始化注册表中的一些控制器。我的问题是,我能保证这个静态代码块只在第一次加载类时被绝对调用吗?我知道我不能保证代码块何时被调用,我猜测它是在类装入程序首次加载它时发生的。我意识到我可以在静态代码块中对类进行同步,但我猜这实际上已经发生了?一个简单的代码示例如下:class...

144得票8回答
为什么Java不允许从静态初始化块中抛出已检查异常?

为什么Java不允许从静态初始化块抛出已检查异常?背后的设计理念是什么?

113得票10回答
Java中初始化程序和构造函数的使用

最近我一直在复习Java技能,发现了一些之前不知道的功能,其中包括静态初始化器和实例初始化器。 我的问题是,在什么情况下应该使用初始化器而不是将代码包含在构造函数中?我想到了几个明显的可能性: 静态/实例初始化器可用于设置 "final" 静态/实例变量的值,而构造函数不能 静态初始化器...

106得票8回答
Java中静态/实例初始化块的运行顺序是什么?

一个项目包含多个类,每个类都有一个静态初始化块。这些块以什么顺序运行?我知道在一个类内部,这样的块按照它们在代码中出现的顺序运行。我读过一些资料说在不同的类中也是如此,但我写的一些示例代码与此不符。我用了以下代码:package pkg; public class LoadTest { ...

79得票8回答
Java枚举反向查找的最佳实践

我在一篇博客上看到 建议 使用Java枚举中的getCode(int)实现"反向查找"是合理的:public enum Status { WAITING(0), READY(1), SKIPPED(-1), COMPLETED(5); private ...

61得票3回答
静态类中静态字段的初始化顺序

给定以下代码:public static class Helpers { private static Char[] myChars = new Char[] {'a', 'b'}; private static Int32 myCharsSize = myChars.Lengt...

51得票6回答
如何强制初始化一个类?

什么是最好且最清晰的方法来做这件事?具体而言,我需要一些代码在一个静态初始化块中运行在那个类中,但我希望这看起来尽可能清晰。

21得票4回答
如果在线程的静态初始化块中创建线程,则程序会挂起

我遇到了一个程序卡住的情况,看起来像死锁。但是我尝试使用jconsole和visualvm进行排查,但是它们没有检测到任何死锁。样例代码:public class StaticInitializer { private static int state = 10; static { ...

14得票2回答
Kotlin - 在类的init块之前初始化伴生对象是否可行?

在Kotlin类中,是否可以在init块之前初始化companion object?如果可以,如何实现?如果不行,是否有实现相同目的的方法? 我有以下情况,class A(val iname: String) { init { foo.add(this) } compa...