国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JAVA 枚舉單例模式及源碼分析的實例詳解

JAVA 枚舉單例模式及源碼分析的實例詳解

2020-12-12 15:53zmx729618 Java教程

這篇文章主要介紹了 JAVA 枚舉單例模式及源碼分析的實例詳解的相關資料,需要的朋友可以參考下

JAVA 枚舉單例模式源碼分析的實例詳解

      單例模式的實現有很多種,網上也分析了如今實現單利模式最好用枚舉,好處不外乎三點:

1.線程安全

2.不會因為序列化而產生新實例

3.防止反射攻擊但是貌似沒有一篇文章解釋ENUM單例如何實現了上述三點,請高手解釋一下這三點:

       關于第一點線程安全,從反編譯后的類源碼中可以看出也是通過類加載機制保證的,應該是這樣吧(解決)

       關于第二點序列化問題,有一篇文章說枚舉類自己實現了readResolve()方法,所以抗序列化,這個方法是當前類自己實現的(解決)

       關于第三點反射攻擊,我有自己試著反射攻擊了以下,不過報錯了...看了下方的反編譯類源碼,明白了,因為單例類的修飾是abstract的,所以沒法實例化。(解決)

      以下是我寫的一個枚舉單例,以及其class文件反編譯過后的類

枚舉單例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public enum Singleton {
  INSTANCE {
 
    @Override
    protected void read() {
      System.out.println("read");
    }
 
    @Override
    protected void write() {
      System.out.println("write");
    }
 
  };
  protected abstract void read();
  protected abstract void write();
}

反編譯過后還原的類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public abstract class Singleton extends Enum
{
 
  private Singleton(String s, int i)
  {
    super(s, i);
  }
 
  protected abstract void read();
 
  protected abstract void write();
 
  public static Singleton[] values()
  {
    Singleton asingleton[];
    int i;
    Singleton asingleton1[];
    System.arraycopy(asingleton = ENUM$VALUES, 0, asingleton1 = new Singleton[i = asingleton.length], 0, i);
    return asingleton1;
  }
 
  public static Singleton valueOf(String s)
  {
    return (Singleton)Enum.valueOf(singleton/Singleton, s);
  }
 
  Singleton(String s, int i, Singleton singleton)
  {
    this(s, i);
  }
 
  public static final Singleton INSTANCE;
  private static final Singleton ENUM$VALUES[];
 
  static
  {
    INSTANCE = new Singleton("INSTANCE", 0) {
 
      protected void read()
      {
        System.out.println("read");
      }
 
      protected void write()
      {
        System.out.println("write");
      }
 
    };
    ENUM$VALUES = (new Singleton[] {
      INSTANCE
    });
  }
}

以上就是JAVA 枚舉單例模式及源碼分析,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/zmx729618/article/details/66968855

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线看一区 | 免费观看黄视频 | 国产精品久久久久免费 | 日日骚一区 | 欧美精品久久久 | 日韩欧美中文字幕在线观看 | 国产成人精品久久二区二区 | 久久久久久国产精品mv | 亚洲视频在线免费观看 | 希岛爱理av一区二区三区 | 网站av | 日韩av电影在线观看 | 国产精品福利午夜在线观看 | 久久精品亚洲精品国产欧美kt∨ | 亚洲91| 欧美日韩国产高清 | 亚洲免费av在线 | 欧美精品成人 | 欧洲成人午夜免费大片 | 自拍偷拍亚洲 | 91精品国产综合久久久久 | 精品麻豆剧传媒av国产九九九 | 自拍小电影 | 中文字幕高清视频 | 中文字幕第七页 | 日韩欧美精品在线 | 男人天堂亚洲 | 亚洲国产精品网站 | 欧美一级特黄aaaaaa | 久久久网| 中国性bbwbbwbbwbbw | 中文字幕一区二区三区四区五区 | 一级片在线观看网站 | 三级av在线| 亚洲欧美高清 | 日韩不卡二区 | 91亚洲精品在线观看 | 国产精品一级毛片在线 | 久久综合av| 欧美二区三区视频 | 免费黄色网页 |