java反射(java.lang.reflect) ---普通单例模式唯一性问题

1. 普通的饱汉式、饿汉式

package org.bighead.test2;

public class TestPrivate {
private String str = "strPrivate";
private static final TestPrivate TESTPRIVATE = new TestPrivate();
// 饱汉式、饿汉式
private TestPrivate() {
super();
System.out.println(str);
} public static TestPrivate getInstance(){
return TESTPRIVATE;
} public void toPrint(){
System.out.println("私有构造-公开方法--单实例");
}
}

反射创建实例、调用方法(实例可访问的)

package org.bighead.test2;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; public class TestDefaultSub { public static void main(String[] args) {
Class<TestPrivate> clazz = TestPrivate.class;
try {
Constructor<?> constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
TestPrivate tp = (TestPrivate) constructor.newInstance();
tp.toPrint();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e1) {
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (InvocationTargetException e1) {
e1.printStackTrace();
}
}
}

2. 并发也会影响  

上一篇:CSS浮动属性Float到底什么怎么回事,下面详细解释一下


下一篇:CQRS微服务架构模式