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 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. 並發也會影響