潜意识里面:私有方法不可以被调用,当然了包括私有构造方法,因为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 SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...
### 使用Java单例模式实现一个简单的日志记录器 #### 一、单例模式简介 单例模式是一种常用的软件设计模式,在该模式中,一个类只能创建一个实例,并且提供了一个全局访问点来访问该实例。单例模式的主要优点包括...
单例模式是软件开发中常用的设计模式之一,用于确保一个类只有一个实例,并提供一个全局访问点。Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景...
在Java中实现单例模式有多种方法: 1. **饿汉式(静态常量)**:在类加载时就完成了初始化,所以没有线程安全问题,但这种实现方式无法实现延迟加载。 ```java public class Singleton { private static final ...
Java单例模式及实现 Java单例模式是一种常见的设计模式,确保某一个类只有一个实例,而且向这个系统提供这个实例。单例模式可以分为三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式的要点 1. 某个类只能有...
**代码**文件则提供了实际的Java实现,通过查看这些代码,我们可以看到单例模式和工厂模式如何在实践中被运用,包括类的定义、方法的实现以及如何通过代码调用来创建和管理对象。 总的来说,这个项目为学习和理解...
java 单例模式(懒汉式与饿汉式) java 单例模式是一种常用的软件设计模式。在它的可信结构中只包含一个被实例化单例的特别类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模式又分为两种方式,...
JAVA设计模式之单例模式(完整版)1[定义].pdf
在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,可以进一步优化单例的创建过程,提高代码的可读性和可维护性。 单例模式的核心在于控制类的实例化...
在Java中,单例模式的实现通常有几种方法: 1. **饿汉式(静态常量)**:在类加载时就完成初始化,所以类加载比较慢,但获取对象的速度快,且线程安全。 ```java public class Singleton { private static final ...
**数据库连接**是应用程序中最常见的资源之一,为了提高效率和减少资源浪费,通常会使用单例模式来管理数据库连接。 #### 示例代码分析: ```java protected static String dbClassName = "com.mysql.jdbc.Driver";...
Java单例模式是设计模式中的一种,在软件开发中扮演着重要的角色。单例模式的目的是保证一个类仅有一个实例,并且提供一个全局访问点。在Java中实现单例模式有多种方法,主要包括懒汉式、饿汉式、注册式(使用容器)...
根据给定的信息,我们可以深入探讨Java单例模式的登录案例,并从中提炼出多个重要的知识点。 ### 单例模式概述 单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式通常...
Java单例模式应用研究 Java单例模式是一种最简单的创建型设计模式,主要用于对系统资源的管理与控制。在软件开发中大量使用,如Windows的文件系统、回收站、打印机等。 单例模式有三个特点: 1. 单例类只能有一个...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。这种模式通常用于需要频繁地创建和销毁的对象,以减少系统性能开销。 单例模式的优点: ...
"Java单例模式实现静态内部类方法示例" Java单例模式是软件设计模式中最基本和最常见的一种设计模式,也是最容易理解的一种设计模式。它的主要思想是确保某个类只有一个实例,并且提供一个全局访问点来访问该实例。...
java单例模式的多种实现方法及优劣区分,以及如何摧毁单例模式。能够让大家认识到单例的多种多样
Java 单例模式(懒汉式与饿汉式) Java 单例模式是一种常用的软件设计模式,在它的可信结构中只包含一个被实例化单例的特殊类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模式又分为两种方式,...