java反射(java.lang.reflect) ---普通單例模式唯一性問題
阿新 • • 發佈:2017-11-17
catch 調用 ant 餓漢 urn 方法 -- ace ati
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. 並發也會影響
java反射(java.lang.reflect) ---普通單例模式唯一性問題