问题标签 [static-block]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 从静态块中抛出已检查的异常
当我尝试出现以下编译错误时,我想从静态块中抛出已检查的异常:
我的静态代码块如下:
如果这在java中是不允许的,我可以做些什么来从静态块中抛出一个检查的异常,换句话说,我怎么能在调用main方法之前做到这一点?谢谢。
java - 可以强制执行应用程序中所有文件的静态块吗?
我的目标是有几个类有一个在程序开始时运行的代码块。假设可以一时兴起将类添加到项目中,并且在main
.
我试图将初始化例程放在这些类的静态块中,它几乎可以按预期工作,但并不完全。只有在该类中的其他内容被调用后,这些块才会被调用。这可以通过下面的代码来证明:
测试.java
另一个.java
另一个2.java
输出是:
可以看出,Another2
假设根本不存在。
问题是:是否有可能“踢”所有类来执行它们的静态块(如果它们有它们)?
android - Android - 没有首先调用静态块,为什么?
根据我对 Java 的理解,静态块应该在任何其他函数之前执行。
我有一个调用静态函数的静态块,都在 MyClass.java 类中,它使用 SharedPreferences 对象。
MyClass 由 MyApplication(扩展应用程序)使用,位于 onCreateMethod 中的某处。
但是,我按顺序看到以下日志:
- MyApplication onCreate 方法
- DatabaseManager onUpdate(如果数据库版本增加)
- DO_SOMETHING_STATIC_FIRST
为什么不首先执行静态块是否有特殊原因?方法会MyApplication onCreate
首先被执行吗?
java - 没有初始化就不会执行静态块
我有一个关于静态块的问题:
假设我有一个看起来像这样的类:
SomeClass
我在某处定义了一个类型的变量。
现在我认为静态块会被执行,但事实并非如此。据我所知,静态块在类加载器加载后立即执行SomeClass
类,静态块就会执行。现在到我真正的问题:
不是在我定义该类型的变量后立即加载类吗?. 如果是,为什么不执行静态块?
如果答案是否定的,那么我怎么知道类加载器是否已经加载了一个类以及加载该类的不同可能性(我知道 2:初始化变量和使用静态字段/方法)
java - Couchbase:从静态代码块中初始化需要更长的时间
我将我的 couchbase 初始化代码放在一个静态代码块中:
我知道这不是一个好习惯,但它非常方便并且达到了它的目的,因为我需要这段代码在多线程环境中只运行一次,并阻止来自其他线程的所有后续调用,直到它完成(黑名单已被初始化)。
令我惊讶的是,对 getBlacklist() 的调用超时并且无法完成。但是,当 2 分钟后再次调用它时(就是这样ObservingCache
做的),它在不到一秒的时间内完成。
为了解决这个问题,我重构了我的代码,使黑名单获取变得懒惰:
调用isBlacklisted()
阻塞所有其他尝试检查条目是否被列入黑名单的线程,直到黑名单被初始化。我不是这个解决方案的忠实拥护者,因为它非常冗长且容易出错——人们可能会尝试从 BLACKLIST 中读取而不assureBlacklistIsPopulated()
事先调用。
类中的静态(非最终)字段如下:
当它不是静态初始化块的一部分时,我无法弄清楚为什么调用会成功。是否存在我不知道的静态初始化块的任何已知与性能相关的漏洞?
编辑:每个请求添加初始化代码
java - 什么时候在创建对象时在 JAVA 中执行静态块?
上述代码的执行顺序为:
在我看来,应该首先执行所有静态块,然后只创建对象。但是,这里首先创建类 A 静态块中的对象“A c=new C()”,然后执行其他静态块。为什么?
c++ - 用于在任意翻译单元中的 main 之前执行任意代码的 C++ 成语
我有一个具有我的main()
功能的翻译单元和另一个没有 main 的翻译单元。假设即使我只控制第二个而不能触摸第一个。
现在,由于我不会深入讨论的原因,我希望能够在运行之前运行一些代码main()
。我知道这可以通过使用函数调用初始化全局变量来完成,但我想隐藏它 - 尽可能少地使用宏(我敢说不使用宏吗?可能是不可能的,C++ 中没有适当的静态块)
什么是优雅的,或者我们应该说,不是很丑陋的方式?更清楚地说,我正在寻找可以提供此功能以供多次使用的东西,而不仅仅是让它工作一次的东西。我希望它尽可能接近:
PS:这个问题与这个关于初始化静态类成员的问题有关,但不一样。它的动机还在于希望清楚地反驳这种说法,它不能在 C++ 中完成。
注意:是的,我知道静态初始化顺序惨败,无需提醒我......而且我不是要绕过它的东西。显然,静态运行代码需要一些谨慎。
java - Java - 单例和基于静态块的类初始化有什么区别?
最近我学习了单例模式。并且不得不意识到一个。例如:
但早些时候我会意识到这个是这样的:
因此结果是一样的:innerObject 初始化了一次,但代码更简洁,我不必担心多线程。我知道这种模式并不依赖于特定的语言,可能你不能在其他地方做这样的事情,但我对这种特殊情况很感兴趣。非常感谢!
java - 静态块未运行,没有最终变量
我在这里使用我的 API 有这段代码:
静态块应该通过调用 MidnightasOS.setGame(Class); 来运行。然而,这并没有发生。
我也使用 System.out 进行了调试,但无济于事。
是 MidnightasOS 内部的问题吗?如有必要,我会发布它的代码。
我这样做是因为我正在尝试使用 Linux 和 Raspberry PI 创建一个人工操作系统。
这应该是一个类似于 Game Boy 的游戏机。
我正在尝试加载所有 Game 类,以便其中至少一个会使用MidnightasOS.setGame(Class);
谢谢阅读。