`
gaojingsong
  • 浏览: 1153555 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【JAVA单例模式之殇】

阅读更多

潜意识里面:私有方法不可以被调用,当然了包括私有构造方法,因为java语言基础里面反复这么说的,可是当单例模式遇到反射,单引以为傲的构造方法私有化,防止重复new对象,被败得一塌糊涂,因为利用反射可以得到类里面的一切想得到的,就算你用private声明封装隐藏,也不可用.....

 

一、代码如下:

package cn.com.test;

import java.lang.reflect.Constructor;

public class Singleton {  

    private static Singleton instance;  

    private Singleton (){

    System.out.println("----Singleton---私有构造Called---------");

    }  

    public static Singleton getInstance() {  

    if (instance == null) {  

        instance = new Singleton();  

    }  

    return instance;  

    }

    

    public static void main(String[] args) throws Exception{

    Singleton ss = Singleton.getInstance();

    System.out.println(ss);

    Class c  = Class.forName("cn.com.test.Singleton");

    Constructor constructor = c.getDeclaredConstructor(null);

    constructor.setAccessible(true);

    Singleton ss1 = (Singleton) constructor.newInstance(null);

    System.out.println(ss1);

    ss1 = (Singleton) constructor.newInstance(null);

    System.out.println(ss1);

   

//    普通方法调用   获取Method对象

//        Method method =  c.getDeclaredMethod("Singleton",

//                new Class[] {});

//        method.setAccessible(true); // 抑制Java的访问控制检查

//        // 如果不加上上面这句,将会Error: TestPrivate can not access a member of class PrivateClass with modifiers "private"

//        method.invoke(c, new Object[] {});

 

    }

}

二、实验结果:



 

 

因此结论是:私有方法也可以被调用,不要被书本迷惑了,竟信书不如无书

  • 大小: 70.3 KB
0
0
分享到:
评论

相关推荐

    java单例模式实例

    一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。

    Java 单例模式 懒汉模式

    Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象

    Java 单例模式.pptx

    作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 PPT详细了单例模式的实现和使用场景

    Java SE程序 单例模式

    Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...

    Java单例模式的全面总结

    Java单例模式,其中:单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种

    java单例模式的例子

    java单例模式的例子java单例模式的例子java单例模式的例子

    JAVA单例模式的几种实现方法

    详细讲解了Java单例模式的几种实现方式,并有详细的示例配合讲解.

    深入Java单例模式浅析

    Java设计模式-单例模式(懒汉和恶汉)

    Java 单例模式 工具类

    源码 博文链接:https://tianlihu.iteye.com/blog/747737

    Java设计模式之单例模式

    目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...

    java Singleton单例模式

    java Singleton单例模式 java Singleton单例模式

    Java单例模式设计

    代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。

    java 获取 配置文件 属性 单例模式 高效加载

    通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包...

    实用Java的单例模式,实用于Java学习者

    实用Java的单例模式,实用于Java学习者 单例模式 单例模式

    java单例模式

    java单例模式开发的7中写法,网上搜索的,可以看看

    Java单例模式(DOC)

    Java单例模式Java单例模式Java单例模式Java单例模式

    单例模式java代码

    编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...

    java中的单例模式

    java 单例模式

    java单例模式连接数据库源码

    java单例模式连接数据库源码.可以直接引用只需加入相应的mysql 或 oracle的驱动,修改源码的连接地址用户名及密码。

Global site tag (gtag.js) - Google Analytics