广州疯狂软件教育Java培训,iOS培训分享
Java中可以使用反射来创建类的实例,即使类的构造方法私有时,也可以创建,这样就可能导致单例模式被破坏。比如下面非常纯的单例模式:
//非常普通的单例模式
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
使用下面方法破坏单例:
public class SingletonKiller {
public static void main(String[] args) throws Exception {
/* 可以使用相对路径,同一个包中可以不用带包路径 */
Class s = Class.forName("com.piaohan.pattern.singleton.Singleton");
Constructor ct = s.getDeclaredConstructor();
/* true:使java不检查访问限制,即可以使用private方法 */
ct.setAccessible(true);
System.out.println(Singleton.getInstance());
System.out.println(ct.newInstance());
System.out.println(Singleton.getInstance() == ct.newInstance());
}
}
结果如下:
com.piaohan.pattern.singleton.Singleton@67f1fba0
com.piaohan.pattern.singleton.Singleton@3fbefab0
false
Java培训不仅注重理论,更注重项目的实战能力,能够让你快速适应企业开发的进度,成为企业所需要的Java人才。疯狂Java培训主要提升学员就业能力,重点提升实践动手能力。没有工作经验的学员,在疯狂Java,通过大量全真经典企业级项目进行集中培训,课上讲师讲解和课下项目练习课上课下双管齐下,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂java培训不但培养学员java开发思维,编程思想,还注重学员企业项目开发能力,让你上岗即上手。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,激情,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!