标签: static-initializer

如何检查类是否已初始化?

您可能会问,为什么我要这样做 - 这是因为我正在使用一个类(来自外部库),它在静态初始化程序中执行操作,我需要知道它是否已经完成.

我看了看ClassLoader,但没有找到任何看起来有用的东西.有任何想法吗?

java classloader static-initializer

11
推荐指数
1
解决办法
9188
查看次数

Kotlin - 是否可以在类中的init块之前初始化伴随对象?

是否可以在Kotlin类中初始化块companion object之前init?如果是这样,怎么样?如果没有,有没有办法完成同样的事情.

我有以下场景,

class A(val iname: String) {
  init {
    foo.add(this)
  }

  companion object B {
    @JvmField val STATIC = A("hi")
    @JvmField val foo = mutableListOf<A>()   
  }

  fun printAllStatics() {
    for (a in foo) {
      print(a.iname)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并且调用printAllStatics导致空指针异常.

oop static static-initializer kotlin companion-object

11
推荐指数
1
解决办法
4779
查看次数

C++ 0x静态初始化和线程安全

我知道,从C++ 03标准来看,函数范围静态初始化不保证是线程安全的:

void moo()
{
    static std::string cat("argent");  // not thread safe
    ...
}
Run Code Online (Sandbox Code Playgroud)

最终提供标准线程支持的C++ 0x标准,是否需要线程安全的函数范围静态初始化?

c++ thread-safety static-initializer c++11

10
推荐指数
1
解决办法
1112
查看次数

使用静态init块

我知道静态init块是如何工作的.
任何人都可以告诉我它的一些典型用途.

java static-initializer

9
推荐指数
2
解决办法
3020
查看次数

.crt部分?这个警告意味着什么?

我最近收到了这个警告(VC++ 2010)

warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators

我假设这是关键部分.我的操作系统课程已经有一段时间了,所以我无法弄清楚这意味着什么.如果我没记错的话,关键部分可以使用共享资源.那么这个警告是如何相关的呢?它究竟意味着什么?

c++ msvcrt visual-studio-2010 critical-section static-initializer

9
推荐指数
3
解决办法
7854
查看次数

如果在引用类之前未调用静态初始化程序,则如何注册java类

我有一个由执行文件处理的类实现的接口,比如搜索或其他什么.

public interface FileProcessorInterface {

    public void processFile(String fileName);

}
Run Code Online (Sandbox Code Playgroud)

然后我对每种文件类型都有不同的实现:

public class TxtProcessor implements FileProcessorInterface {

    @Override public void processFile(String fileName) { //do the work }

}
Run Code Online (Sandbox Code Playgroud)

因此我有处理器的Utilizer,它有一个允许注册每个类的方法,如下所示:

class Utilizer {

Map <String, Class> registered = new HashMap<>();

public void registerClass(String fileExt, Class clazz) {

    registered.put(fileExt, clazz);

}

public void processFile(String fileName) {

    //1) get the registered class from registered map (omitted because easy and not relevant)

    //2) create an instance of the class using reflection (omitted because easy …
Run Code Online (Sandbox Code Playgroud)

java factory-method static-initializer

9
推荐指数
2
解决办法
6483
查看次数

涉及{}的C代码

我在一些C代码中看到了这个:

Wininfo W = { sizeof(Wininfo) };
Run Code Online (Sandbox Code Playgroud)

这到底意味着什么?

c curly-braces static-initializer

8
推荐指数
3
解决办法
1061
查看次数

获取静态初始化块以在不加载类的情况下在java中运行

我有几个课程,如下所示

public class TrueFalseQuestion implements Question{
    static{
        QuestionFactory.registerType("TrueFalse", "Question");
    }
    public TrueFalseQuestion(){}
}
Run Code Online (Sandbox Code Playgroud)

...

public class QuestionFactory {

 static final HashMap<String, String > map =  new HashMap<String,String>();

 public static void registerType(String questionName, String ques ) {
     map.put(questionName, ques);
     }
 }



public class FactoryTester {
    public static void main(String[] args) {
        System.out.println(QuestionFactory.map.size());
        // This prints 0. I want it to print 1
    }
}
Run Code Online (Sandbox Code Playgroud)

如何更改TrueFalseQuestion类以便始终运行静态方法,以便在运行main方法时得到1而不是0?我不希望主方法有任何改变.

我实际上是在尝试实现子类向工厂注册的工厂模式,但我已经简化了这个问题的代码.

java static-members static-initializer

8
推荐指数
2
解决办法
8730
查看次数

如何在Java中将javadoc添加到静态初始化程序?

我重构了一个类,并将一些代码从构造函数移动到静态初始化程序.我应该怎么处理构造函数上的javadoc?是否可以将javadoc添加到静态初始化程序?

java javadoc static-initializer

7
推荐指数
2
解决办法
1373
查看次数

带有(和不带)混合静态构造函数的C#静态初始化程序

我已经阅读了C#语言规范(v5.0)的相关部分,但我找不到与我所看到的相关的部分.

如果您运行下面的代码,您将看到下面的输出,这是我所期望的:

using System;

class Test {
   static int count = 0;
   static void Main() {
      Console.WriteLine("In Main(), A.X=" + A.X);
   }

   public static int F(string message) {
      Console.WriteLine(message);
      A.X = ++count;

      Console.WriteLine("\tA.X has been set to " + A.X);
      B.Y = ++count;

      Console.WriteLine("\tB.Y has been set to " + B.Y);
      return 999;
   }
}
class A {
   static A() { }
   public static int U = Test.F("Init A.U");
   public static int X = Test.F("Init A.X");
}

class B { …
Run Code Online (Sandbox Code Playgroud)

c# static static-initializer

7
推荐指数
1
解决办法
288
查看次数