栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

单例模式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单例模式

特权派系可以在AccessibleObject.setAccessible方法的帮助下反射性地调用私有构造函数。如果您需要对此进行辩护,请修改构造函数。我的问题是:如何精确调用私有构造函数?什么是AccessibleObject.setAccessible?

显然,私有的构造函数可以由类本身调用(例如,从静态工厂方法中)。反思地,布洛赫在谈论的是:

    import java.lang.reflect.Constructor;    public class PrivateInvoker {        public static void main(String[] args) throws Exception{ //compile error     //      Private p = new Private(); //works fine Constructor<?> con = Private.class.getDeclaredConstructors()[0]; con.setAccessible(true); Private p = (Private) con.newInstance();        }     }    class Private {        private Private() { System.out.println("Hello!");        }     }

2,您的专家对单身人士采取什么方法:

通常情况下,第一个偏爱。
第二种方法(假设您要

TestInstance
在返回新实例之前测试是否为null)以需要同步或线程不安全为代价获得延迟加载。

当您的第二个示例未将实例分配给

TestInstance
at声明时,我写了以上内容。如现在所述,以上考虑是无关紧要的。

如果我们每次必须检查新实例还是每次都检查同一实例,第二种方法是否更灵活?

这与灵活性无关,而与创建一个(唯一的)实例的成本有关。 如果您选择a),则会在类加载时发生。通常很好,因为该类仅在需要时才加载。

当您的第二个示例未将实例分配给

TestInstance
at声明时,我写了以上内容。如现在所述,在两种情况下,都将在类加载时创建Singleton。

如果我尝试克隆类/对象怎么办?

由于明显的原因,单例不应该允许克隆。会抛出CloneNotSupportedException异常,除非您出于某种原因实现,否则它将自动抛出

Cloneable

单元素枚举类型是实现单例的最佳方法。为什么?如何?

这方面的例子和理由都在书中。你哪一部分不懂



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号