`
gaojingsong
  • 浏览: 1201312 次
  • 性别: 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 单例模式 懒汉模式

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

    Java单例模式设计

    Java单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供全局访问点。这种模式在需要频繁创建和销毁对象的场景中,或者当对象昂贵时(如数据库连接),能够节省系统资源,提高效率。本篇文章将深入探讨...

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

    单例模式是软件开发中常用的设计模式之一,用于确保一个类只有一个实例,并提供一个全局访问点。Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景...

    Java单例模式应用研究.pdf

    ### Java单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最基本的创建型设计模式,其主要目的是控制一个类的实例化过程,确保在整个应用程序中仅存在一个实例,并且该实例能够被全局...

    Java实现多种单例模式

    在Java编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中尤其有用,因为它可以节省系统资源并确保对象间的协调一致。以下是...

    设计模式之单例模式(结合工厂模式)

    在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,可以进一步优化单例的创建过程,提高代码的可读性和可维护性。 单例模式的核心在于控制类的实例化...

    Java单例模式实现静态内部类方法示例

    "Java单例模式实现静态内部类方法示例" Java单例模式是软件设计模式中最基本和最常见的一种设计模式,也是最容易理解的一种设计模式。它的主要思想是确保某个类只有一个实例,并且提供一个全局访问点来访问该实例。...

    Java设计模式之单例模式的七种写法

    Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...

    Java设计模式之单例模式讲解

    入名所示,该文件为最详细的Java单例模式讲解并附有讲解代码。主要讲了单例模式的几种方法,懒汉模式、饿汉模式、静态内部类模式。着重讲解了懒汉模式下怎么实现线程安全。饿汉模式和静态内部类模式如何设置能够避免...

    java 单例模式(懒汉式与饿汉式)

    Java 单例模式(懒汉式与饿汉式) Java 单例模式是一种常用的软件设计模式,在它的可信结构中只包含一个被实例化单例的特殊类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模式又分为两种方式,...

    Java 单例模式线程安全问题

    Java 单例模式线程安全问题详解 Java 单例模式线程安全问题是指在 Java 中实现单例模式时,如何确保线程安全的问题。单例模式是指在整个应用程序生命周期中,只有一个实例存在的设计模式。这种模式可以提高性能,...

    java单例模式完全讲解.pdf

    非常详细的Java单例模式讲解的文档,请求通过,已经上传过一次了

    43丨单例模式(下):如何设计实现一个集群环境下的分布式单例模式?1

    单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态方法获取该类的唯一实例。单例模式的唯一性通常是在进程范围内,...

    java单例模式课程.pdf

    Java单例模式是一种设计模式,它允许类只有一个实例,并提供一个全局访问点。在上述的场景中,我们探讨了如何通过单例模式来优化读取配置文件的过程。配置文件是许多应用程序的重要组成部分,它们通常存储应用程序...

    单例模式(饿汉模式、懒汉模式、DCL单例模式、枚举)

    单例模式是设计模式中的一种,它在软件工程中用于控制类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。这种模式在资源管理、缓存、日志记录等方面广泛应用。本文将详细讨论四种常见的单例实现方式:...

    Java实现单例模式[汇编].pdf

    总的来说,单例模式在Java中有着重要的应用,开发者可以根据实际需求选择适合的实现方式。需要注意的是,虽然单例模式可以有效地管理和控制资源,但过度使用也可能导致系统设计过于复杂,难以测试和维护。在使用单例...

    详解JAVA单例模式及多种实现.doc

    Java中的单例模式是一种设计模式,它用于控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。这种模式常用于配置管理、缓存、日志记录、对话框、注册表设置、线程池等场景,以提高性能、减少资源...

Global site tag (gtag.js) - Google Analytics