創(chuàng)建對(duì)象之枚舉

有些對(duì)象根據(jù)需求需要保證其唯一性,此時(shí)需要用單例模式,單例模式采用枚舉是最好的解決方式

package com.liangliang.coreJava.OOP.eum;

public enum Elvis
{
INSTANCE("Solar","25");
private final String name;
private final String age;
private Elvis(String name,String age){
this.name=name;
this.age =age;
}
public void leaviBuilding(){
System.out.println("name="+name+",age="+age);
}
public static Elvis getInstance(){
return Elvis.INSTANCE;
}
}

1、代碼簡(jiǎn)單
2、可以防止序列化時(shí)破壞單例
3、線(xiàn)程安全,不需要考慮雙重鎖的問(wèn)題

通過(guò)反編譯后代碼我們可以看到,public final class T extends Enum,說(shuō)明,該類(lèi)是繼承了Enum類(lèi)的,
同時(shí)final關(guān)鍵字告訴我們,這個(gè)類(lèi)也是不能被繼承的。當(dāng)我們  使用enmu來(lái)定義一個(gè)枚舉類(lèi)型的時(shí)候,編
譯器會(huì)自動(dòng)幫我們創(chuàng)建一個(gè)final類(lèi)型的類(lèi)繼承Enum類(lèi),所以枚舉類(lèi)型不能被繼承,我們看到這個(gè)類(lèi)中有幾
個(gè)屬性和方法。
        public final class T extends Enum
    {
        private T(String s, int i)
        {
            super(s, i);
        }
        public static T[] values()
        {
            T at[];
            int i;
            T at1[];
            System.arraycopy(at = ENUM$VALUES, 0, at1 = new T[i = at.length], 0, i);
            return at1;
        }

        public static T valueOf(String s)
        {
            return (T)Enum.valueOf(demo/T, s);
        }

        public static final T SPRING;
        public static final T SUMMER;
        public static final T AUTUMN;
        public static final T WINTER;
        private static final T ENUM$VALUES[];
        static
        {
            SPRING = new T("SPRING", 0);
            SUMMER = new T("SUMMER", 1);
            AUTUMN = new T("AUTUMN", 2);
            WINTER = new T("WINTER", 3);
            ENUM$VALUES = (new T[] {
                SPRING, SUMMER, AUTUMN, WINTER
            });
        }
    }
    因?yàn)閟tatic類(lèi)型的屬性會(huì)在類(lèi)被加載之后被初始化,當(dāng)一個(gè)Java類(lèi)第一次被真正使用到的時(shí)候靜態(tài)資源被初始化、Java類(lèi)的加載和初始化過(guò)程都是線(xiàn)程安全的。
    所以,創(chuàng)建一個(gè)enum類(lèi)型是線(xiàn)程安全的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,718評(píng)論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,012評(píng)論 0 11
  • 說(shuō)到離婚,大多數(shù)人都會(huì)勸女人再忍一忍,離婚之后很難找到更好的。這是真的嗎?為什么離異女性很難再找到更好的歸宿呢? ...
    白衣梧桐閱讀 820評(píng)論 2 4
  • 我是膽小鬼,我在召喚蜘蛛俠。 世上怎么會(huì)有如此神奇的物種。有的扁瘦,有的圓胖,有的腿短,有的腿長(zhǎng)。它們無(wú)處不在,在...
    風(fēng)箏simy閱讀 326評(píng)論 0 0

友情鏈接更多精彩內(nèi)容