国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

java中的枚舉單例

2019-11-14 11:13:25
字體:
供稿:網(wǎng)友

在相關(guān)程序中,我們經(jīng)常會用到一些類管理相關(guān)資源或者時工具類。這些類有的可以使用單例模式,單例模式確保在同一個class loader里面只有一個實(shí)例對象,這樣就可以保證對資源管理的準(zhǔn)確性,當(dāng)然這些話都是我個人理解的,純屬胡說八道。那么大家都知道實(shí)現(xiàn)單例模式有五種方式,今天我們單獨(dú)說下枚舉實(shí)現(xiàn)單例的方式/

   獻(xiàn)上代碼:

public enum SourceManagerEnum {    SINGLEINSTANCE;    PRivate T instance;// T 代表 相應(yīng)的類型    // JVM 保證這個方法在整個生命周期只調(diào)用一次    private SourceManagerEnum() {        instance = new T();    }    public T getInstance() {        return instance;    }

}然后我們在別的對象里面就可以使用單例了。

T  instance = SourceManagerEnum.SINGLEINSTANCE.getInstance();

注意事項(xiàng),在T類中的構(gòu)造函數(shù)一定要設(shè)置成private ,這個大家都明白

最后一點(diǎn),為什么推薦使用枚舉單例模式,因?yàn)檫@樣可以防止反射攻擊。

        Class cl = Class                .forName("XXXXX.SingleUtil");        SingleUtil instance1 = (SingleUtil) cl.newInstance();        SingleUtil instance2 = SingleUtil.getInstance();        System.out.println(instance1 == instance2);

這樣一段代碼輸出的結(jié)果是什么呢。

因?yàn)槊杜e在反射的時候就會報錯。。。。。。。。(純屬大霧,還是需要大家自己驗(yàn)證)

Class cl = Class                .forName("XXXX.SingleEnumReflect");        if (cl.isEnum()) {            SingleEnumReflect[] ts = (SingleEnumReflect[]) cl                    .getEnumConstants();            for (SingleEnumReflect singleEnumReflect : ts) {                System.out                        .println(singleEnumReflect.getInstance() == SingleEnumReflect.Instance                                .getInstance());            }        }

SingleEnumReflect 枚舉的代碼如下。猜猜上面輸出什么?

public enum SingleEnumReflect {    Instance;    private TextFilterTest textFilter;    private SingleEnumReflect() {    }    public TextFilterTest getInstance() {        return textFilter;    }}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 厦门市| 许昌县| 桓台县| 临朐县| 图们市| 青田县| 广南县| 辰溪县| 漠河县| 都兰县| 巴楚县| 禄丰县| 河池市| 塘沽区| 金门县| 肇源县| 宁明县| 颍上县| 永昌县| 改则县| 贺州市| 临泽县| 松阳县| 迭部县| 乌拉特中旗| 旅游| 当雄县| 萨嘎县| 涿鹿县| 南澳县| 皮山县| 永胜县| 汉寿县| 佛冈县| 自贡市| 峡江县| 炉霍县| 江阴市| 巩义市| 阿城市| 咸阳市|