潜意识里面:私有方法不可以被调用,当然了包括私有构造方法,因为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[] {});
}
}
二、实验结果:
因此结论是:私有方法也可以被调用,不要被书本迷惑了,竟信书不如无书
相关推荐
Java中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于控制资源的访问,比如数据库连接池、线程池或者日志对象等。本篇文章将深入探讨如何在Java中...
Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
Java单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供全局访问点。这种模式在需要频繁创建和销毁对象的场景中,或者当对象昂贵时(如数据库连接),能够节省系统资源,提高效率。本篇文章将深入探讨...
单例模式是软件开发中常用的设计模式之一,用于确保一个类只有一个实例,并提供一个全局访问点。Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景...
### Java单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最基本的创建型设计模式,其主要目的是控制一个类的实例化过程,确保在整个应用程序中仅存在一个实例,并且该实例能够被全局...
在Java编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中尤其有用,因为它可以节省系统资源并确保对象间的协调一致。以下是...
在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,可以进一步优化单例的创建过程,提高代码的可读性和可维护性。 单例模式的核心在于控制类的实例化...
"Java单例模式实现静态内部类方法示例" Java单例模式是软件设计模式中最基本和最常见的一种设计模式,也是最容易理解的一种设计模式。它的主要思想是确保某个类只有一个实例,并且提供一个全局访问点来访问该实例。...
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
入名所示,该文件为最详细的Java单例模式讲解并附有讲解代码。主要讲了单例模式的几种方法,懒汉模式、饿汉模式、静态内部类模式。着重讲解了懒汉模式下怎么实现线程安全。饿汉模式和静态内部类模式如何设置能够避免...
Java 单例模式(懒汉式与饿汉式) Java 单例模式是一种常用的软件设计模式,在它的可信结构中只包含一个被实例化单例的特殊类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模式又分为两种方式,...
Java 单例模式线程安全问题详解 Java 单例模式线程安全问题是指在 Java 中实现单例模式时,如何确保线程安全的问题。单例模式是指在整个应用程序生命周期中,只有一个实例存在的设计模式。这种模式可以提高性能,...
非常详细的Java单例模式讲解的文档,请求通过,已经上传过一次了
单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态方法获取该类的唯一实例。单例模式的唯一性通常是在进程范围内,...
Java单例模式是一种设计模式,它允许类只有一个实例,并提供一个全局访问点。在上述的场景中,我们探讨了如何通过单例模式来优化读取配置文件的过程。配置文件是许多应用程序的重要组成部分,它们通常存储应用程序...
单例模式是设计模式中的一种,它在软件工程中用于控制类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。这种模式在资源管理、缓存、日志记录等方面广泛应用。本文将详细讨论四种常见的单例实现方式:...
总的来说,单例模式在Java中有着重要的应用,开发者可以根据实际需求选择适合的实现方式。需要注意的是,虽然单例模式可以有效地管理和控制资源,但过度使用也可能导致系统设计过于复杂,难以测试和维护。在使用单例...
Java中的单例模式是一种设计模式,它用于控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。这种模式常用于配置管理、缓存、日志记录、对话框、注册表设置、线程池等场景,以提高性能、减少资源...