问题标签 [static-initialization]
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静态初始化
问题:为什么输出会是:x
. 但不是:Inside B.x
c++ - 静态初始化器的上下文是什么,我如何向它声明友谊?
g++
巧妙地指出,anarray
它既不是函数也不是成员函数。是否可以修复此代码保留veryprivate
private
?接受 C++11。
c# - 如何在 Main() 方法之前在 C# 中运行静态初始化方法?
给定一个带有初始化方法的静态类:
如何确保初始化程序在之前运行Main()
?
我能想到的最好的方法是将其添加到Foo
:
这会起作用还是有一些不可预见的警告?有没有更好的方法来做到这一点?
java - 为什么静态初始化块中不允许有限定的静态最终变量?
情况1
案例2
为什么情况 1会导致编译错误?
java - Lambdaj FinalClassArgumentCreators 的应用程序范围的配置。在哪里以及如何做?
我们在配置 lambdaj 以使用 Joda Time 时遇到问题。由于LocalDate
是最终类,Lambdaj 需要如下初始化:(参见 bug 70)
由于我们需要将此配置应用到几乎所有地方,因此我们缺乏如何实现此配置的选项。我们的应用程序是一个基于 Spring 和 Wicket 的 Web 应用程序。
我提出了三种不同的选择:
1.核心maven模块中的静态初始化块
由于核心模块包含在所有其他模块中,因此所有模块都将包含该类。剩下的问题是,即使没有对目标类的引用,静态块是否总是被初始化?
例子
2.一个初始化beanapplicationContext.xml
缺点:永远不会为非 Spring 测试初始化
示例:在 applicationContext-core.xml 中(包含在每个模块中)
3. 对 Wicket 应用程序类中的初始化方法的调用
缺点:永远不会在 web 模块之外初始化
我的问题是:实现这一目标的最佳方法是什么?
java - 静态初始化器在构造函数之后运行,为什么?
我有 2 节课:
A类:
B类:
我创建了一个 Main 类,它只创建了新的 A:
我得到的输出是:
如您所见,A 的构造函数在其静态初始化程序之前被调用。
我知道这与我创建的循环依赖有关,但我的印象是静态初始化程序应该始终在构造函数之前运行。
发生这种情况的原因是什么(技术上在java实现中)?
是否建议一起避免使用静态初始化程序?
java - 如果类 X 中的静态初始化器调用 Y 中的方法,但 Y 的静态初始化器调用 X 中的方法来设置其静态值怎么办?
这个问题在 JAVA PROGRAMMING LANAGUAGE 书中提出并解释。但我不清楚解释。
有人可以更清楚地解释吗?
书中的解释是::
在编译期间无法可靠地检测到这种循环静态初始化,因为在编译 X 时可能不会编写 Y 的代码。如果发生循环,则 X 的静态初始化程序将仅执行到调用 Y 的方法的位置。当 Y 反过来调用 X 方法时,该方法将与尚未执行的其余静态初始化程序一起运行。X 中任何未执行初始化程序的静态字段仍将具有其默认值(false、'/u0000'、零或 null,具体取决于它们的类型)。
c - 为什么成员 y 在以下代码中设置为 0?
我无法弄清楚为什么会这样。我正在使用一堆非常复杂的结构、联合、两者的未命名版本、静态变量等......但我确信这应该有效。经过一天的调试,我将问题缩小到以下代码中发生的情况。我正在使用-fms-extensions,它似乎不能很好地适应这种情况:
javascript - 如何有效地用许多静态键/值对填充 Javascript 对象文字?
创建 Javascript 对象的典型方法如下:
我需要创建这样一个键和值都是字符串的映射。我有一大组静态的配对要添加到地图中。
有没有办法在Javascript中执行这样的事情:
还是我必须为每个条目执行类似的操作:
基本上,剩余的 Javascript 代码将遍历此映射并根据“运行时”已知的标准提取值。如果这个循环工作有更好的数据结构,我也很感兴趣。我的目标是最小化代码。
c++ - 如何在 main 之前立即调用函数或静态初始化对象?
简而言之,我希望在尽可能靠近 main()/DllMain() 开头的地方进行特定的静态初始化。在静态初始化期间最后调用的构造函数可能是可以接受的。
由于这几乎肯定是特定于编译器的实现,因此我特别希望使用可视化 C++ 编译器(VS 2010 及更高版本)来执行此操作。将来我可能需要在 GCC 和 Clang 中执行此操作,但这不是一个直接的问题。
长话短说,我在基础库中有一个对象,该对象被静态初始化并在其构造函数中创建一个线程。该线程依赖于我们无法控制的库中的其他静态初始化对象,因此它会导致静态初始化中的竞争条件。如果我可以暂停或避免创建线程,直到所有其他静态初始化完成,这应该可以解决问题(一个简单的 Sleep(5000) 可以避免这个问题,尽管这不是一个可靠的解决方案)。
我可以在 main() 函数中显式调用初始化函数,但这并不理想,因为我们有 20 多个使用该库的二进制文件,因此每个程序员都必须记住在每个二进制文件中运行初始化。如果可能的话,我宁愿把这个责任推给编译器。