package com.mdjin;
/**
* 为什么静态变量和静态代码块里面的名称可以相同?
* 为什么根据类名获取类的变量,获取到的是静态代码块中定义的
*/
public class TestSingleton {
public static void main(String args[]) {
Singleton st = Singleton.getInstance();
System.out.println(st);
}
}
class Singleton {
private Singleton() {
System.out.println("Singleton init");
}
private static class SingletonHandler {
static Singleton instance/* = new Singleton()*/;
static {
System.out.println("SingletonHandler");
Singleton instance = new Singleton();
}
}
public static Singleton getInstance() {
System.out.println("Singleton instance");
Singleton st = SingletonHandler.instance;
return st;
}
}
結果為null。