潜意识里面:私有方法不可以被调用,当然了包括私有构造方法,因为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 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 PPT详细了单例模式的实现和使用场景
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设计模式-单例模式(懒汉和恶汉)
源码 博文链接:https://tianlihu.iteye.com/blog/747737
目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...
java Singleton单例模式 java Singleton单例模式
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包...
实用Java的单例模式,实用于Java学习者 单例模式 单例模式
java单例模式开发的7中写法,网上搜索的,可以看看
Java单例模式Java单例模式Java单例模式Java单例模式
编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...
java 单例模式
java单例模式连接数据库源码.可以直接引用只需加入相应的mysql 或 oracle的驱动,修改源码的连接地址用户名及密码。