zoukankan      html  css  js  c++  java
  • 使用反射破坏单例模式

      广州疯狂软件教育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核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

  • 相关阅读:
    PCLVisualizer可视化类
    【Leetcode】课程表(拓扑排序)
    不是充许的静态以太网地址,它与vmware保留的mac地址冲突
    vmware虚拟机linux添加硬盘后先分区再格式化操作方法
    卸载mysql时,提示libmysqlclient.so.16()(64bit) is needed by (installed) postfix
    创建mysql数据库,在新数据库中创建表,再尝试删除表
    忘记linux下的mysql密码,需要重新创建密码123456
    创建mysql表
    程序员的冷笑话 python版本
    python的__mro__与__slot__
  • 原文地址:https://www.cnblogs.com/gojava/p/3711428.html
Copyright © 2011-2022 走看看