enum.html.e31ca12b.js 41.0 KB
Newer Older
沉默王二's avatar
沉默王二 已提交
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
import{_ as p}from"./plugin-vue_export-helper.21dcd24c.js";import{r as e,o as t,c,a as n,b as o,e as l,d as s}from"./app.36bfa2ec.js";const i={},u=l(`<p>\u201C\u4ECA\u5929\u6211\u4EEC\u6765\u5B66\u4E60\u679A\u4E3E\u5427\uFF0C\u4E09\u59B9\uFF01\u201D\u6211\u8BF4\uFF0C\u201C\u540C\u5B66\u8BA9\u4F60\u53BB\u5979\u5BB6\u73A9\u4E86\u4E24\u5929\uFF0C\u611F\u89C9\u600E\u4E48\u6837\u5440\uFF1F\u201D</p><p>\u201C\u5FC3\u60C5\u653E\u677E\u4E86\u4E0D\u5C11\u3002\u201D\u4E09\u59B9\u8BF4\uFF0C\u201C\u53EF\u4EE5\u5F00\u59CB\u5B66 Java \u4E86\uFF0C\u4E8C\u54E5\u3002\u201D</p><p>\u201COK\u3002\u201D</p><p>\u201C\u679A\u4E3E\uFF08enum\uFF09\uFF0C\u662F Java 1.5 \u65F6\u5F15\u5165\u7684\u5173\u952E\u5B57\uFF0C\u5B83\u8868\u793A\u4E00\u79CD\u7279\u6B8A\u7C7B\u578B\u7684\u7C7B\uFF0C\u7EE7\u627F\u81EA java.lang.Enum\u3002\u201D</p><p>\u201C\u6211\u4EEC\u6765\u65B0\u5EFA\u4E00\u4E2A\u679A\u4E3E PlayerType\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">enum</span> <span class="token class-name">PlayerType</span> <span class="token punctuation">{</span>
    TENNIS<span class="token punctuation">,</span>
    FOOTBALL<span class="token punctuation">,</span>
    BASKETBALL
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u4E8C\u54E5\uFF0C\u6211\u6CA1\u770B\u5230\u6709\u7EE7\u627F\u5173\u7CFB\u5440\uFF01\u201D</p><p>\u201C\u522B\u7740\u6025\uFF0C\u770B\u4E00\u4E0B\u53CD\u7F16\u8BD1\u540E\u7684\u5B57\u8282\u7801\uFF0C\u4F60\u5C31\u660E\u767D\u4E86\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">final</span> <span class="token keyword">class</span> <span class="token class-name">PlayerType</span> <span class="token keyword">extends</span> <span class="token class-name">Enum</span>
<span class="token punctuation">{</span>

    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">PlayerType</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token function">values</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
    <span class="token punctuation">{</span>
        <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span>$VALUES<span class="token punctuation">.</span><span class="token function">clone</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">PlayerType</span> <span class="token function">valueOf</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span>
    <span class="token punctuation">{</span>
        <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">)</span><span class="token class-name">Enum</span><span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>com<span class="token operator">/</span>cmower<span class="token operator">/</span>baeldung<span class="token operator">/</span>enum1<span class="token operator">/</span><span class="token class-name">PlayerType</span><span class="token punctuation">,</span> name<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">private</span> <span class="token class-name">PlayerType</span><span class="token punctuation">(</span><span class="token class-name">String</span> s<span class="token punctuation">,</span> <span class="token keyword">int</span> i<span class="token punctuation">)</span>
    <span class="token punctuation">{</span>
        <span class="token keyword">super</span><span class="token punctuation">(</span>s<span class="token punctuation">,</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">PlayerType</span> TENNIS<span class="token punctuation">;</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">PlayerType</span> FOOTBALL<span class="token punctuation">;</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">PlayerType</span> BASKETBALL<span class="token punctuation">;</span>
    <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">PlayerType</span> $VALUES<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>

    <span class="token keyword">static</span> 
    <span class="token punctuation">{</span>
        TENNIS <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">PlayerType</span><span class="token punctuation">(</span><span class="token string">&quot;TENNIS&quot;</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        FOOTBALL <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">PlayerType</span><span class="token punctuation">(</span><span class="token string">&quot;FOOTBALL&quot;</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        BASKETBALL <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">PlayerType</span><span class="token punctuation">(</span><span class="token string">&quot;BASKETBALL&quot;</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        $VALUES <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">PlayerType</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span>
            TENNIS<span class="token punctuation">,</span> FOOTBALL<span class="token punctuation">,</span> BASKETBALL
        <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u770B\u5230\u6CA1\uFF1FJava \u7F16\u8BD1\u5668\u5E2E\u6211\u4EEC\u505A\u4E86\u5F88\u591A\u9690\u5F0F\u7684\u5DE5\u4F5C\uFF0C\u4E0D\u7136\u624B\u5199\u4E00\u4E2A\u679A\u4E3E\u5C31\u6CA1\u90A3\u4E48\u7701\u5FC3\u7701\u4E8B\u4E86\u3002\u201D</p><ul><li>\u8981\u7EE7\u627F Enum \u7C7B\uFF1B</li><li>\u8981\u5199\u6784\u9020\u65B9\u6CD5\uFF1B</li><li>\u8981\u58F0\u660E\u9759\u6001\u53D8\u91CF\u548C\u6570\u7EC4\uFF1B</li><li>\u8981\u7528 static \u5757\u6765\u521D\u59CB\u5316\u9759\u6001\u53D8\u91CF\u548C\u6570\u7EC4\uFF1B</li><li>\u8981\u63D0\u4F9B\u9759\u6001\u65B9\u6CD5\uFF0C\u6BD4\u5982\u8BF4 <code>values()</code> \u548C <code>valueOf(String name)</code>\u3002</li></ul><p>\u201C\u786E\u5B9E\uFF0C\u4F5C\u4E3A\u5F00\u53D1\u8005\uFF0C\u6211\u4EEC\u7684\u4EE3\u7801\u91CF\u51CF\u5C11\u4E86\uFF0C\u679A\u4E3E\u770B\u8D77\u6765\u7B80\u6D01\u660E\u4E86\u3002\u201D\u4E09\u59B9\u8BF4\u3002</p><p>\u201C\u65E2\u7136\u679A\u4E3E\u662F\u4E00\u79CD\u7279\u6B8A\u7684\u7C7B\uFF0C\u90A3\u5B83\u5176\u5B9E\u662F\u53EF\u4EE5\u5B9A\u4E49\u5728\u4E00\u4E2A\u7C7B\u7684\u5185\u90E8\u7684\uFF0C\u8FD9\u6837\u5B83\u7684\u4F5C\u7528\u57DF\u5C31\u53EF\u4EE5\u9650\u5B9A\u4E8E\u8FD9\u4E2A\u5916\u90E8\u7C7B\u4E2D\u4F7F\u7528\u3002\u201D\u6211\u8BF4\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Player</span> <span class="token punctuation">{</span>
    <span class="token keyword">private</span> <span class="token class-name">PlayerType</span> type<span class="token punctuation">;</span>
    <span class="token keyword">public</span> <span class="token keyword">enum</span> <span class="token class-name">PlayerType</span> <span class="token punctuation">{</span>
        TENNIS<span class="token punctuation">,</span>
        FOOTBALL<span class="token punctuation">,</span>
        BASKETBALL
    <span class="token punctuation">}</span>
    
    <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">isBasketballPlayer</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">return</span> <span class="token function">getType</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token class-name">PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token class-name">PlayerType</span> <span class="token function">getType</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">return</span> type<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">setType</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span> type<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">this</span><span class="token punctuation">.</span>type <span class="token operator">=</span> type<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>PlayerType \u5C31\u76F8\u5F53\u4E8E Player \u7684\u5185\u90E8\u7C7B\u3002</p><p>\u7531\u4E8E\u679A\u4E3E\u662F final \u7684\uFF0C\u6240\u4EE5\u53EF\u4EE5\u786E\u4FDD\u5728 Java \u865A\u62DF\u673A\u4E2D\u4EC5\u6709\u4E00\u4E2A\u5E38\u91CF\u5BF9\u8C61\uFF0C\u57FA\u4E8E\u8FD9\u4E2A\u539F\u56E0\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u201C==\u201D\u8FD0\u7B97\u7B26\u6765\u6BD4\u8F83\u4E24\u4E2A\u679A\u4E3E\u662F\u5426\u76F8\u7B49\uFF0C\u53C2\u7167 <code>isBasketballPlayer()</code> \u65B9\u6CD5\u3002</p><p>\u201C\u90A3\u4E3A\u4EC0\u4E48\u4E0D\u4F7F\u7528 <code>equals()</code> \u65B9\u6CD5\u5224\u65AD\u5462\uFF1F\u201D\u4E09\u59B9\u95EE\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">if</span><span class="token punctuation">(</span>player<span class="token punctuation">.</span><span class="token function">getType</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token class-name">Player<span class="token punctuation">.</span>PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u201C\u6211\u6765\u7ED9\u4F60\u89E3\u91CA\u4E0B\u3002\u201D</p><p>\u201C==\u201D\u8FD0\u7B97\u7B26\u6BD4\u8F83\u7684\u65F6\u5019\uFF0C\u5982\u679C\u4E24\u4E2A\u5BF9\u8C61\u90FD\u4E3A null\uFF0C\u5E76\u4E0D\u4F1A\u53D1\u751F <code>NullPointerException</code>\uFF0C\u800C <code>equals()</code> \u65B9\u6CD5\u5219\u4F1A\u3002</p><p>\u53E6\u5916\uFF0C \u201C==\u201D\u8FD0\u7B97\u7B26\u4F1A\u5728\u7F16\u8BD1\u65F6\u8FDB\u884C\u68C0\u67E5\uFF0C\u5982\u679C\u4E24\u4FA7\u7684\u7C7B\u578B\u4E0D\u5339\u914D\uFF0C\u4F1A\u63D0\u793A\u9519\u8BEF\uFF0C\u800C <code>equals()</code> \u65B9\u6CD5\u5219\u4E0D\u4F1A\u3002</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/enum/enum-01.png" alt=""></p><p>\u201C\u679A\u4E3E\u8FD8\u53EF\u7528\u4E8E switch \u8BED\u53E5\uFF0C\u548C\u57FA\u672C\u6570\u636E\u7C7B\u578B\u7684\u7528\u6CD5\u4E00\u81F4\u3002\u201D\u6211\u8BF4\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">switch</span> <span class="token punctuation">(</span>playerType<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">case</span> TENNIS<span class="token operator">:</span>
            <span class="token keyword">return</span> <span class="token string">&quot;\u7F51\u7403\u8FD0\u52A8\u5458\u8D39\u5FB7\u52D2&quot;</span><span class="token punctuation">;</span>
        <span class="token keyword">case</span> FOOTBALL<span class="token operator">:</span>
            <span class="token keyword">return</span> <span class="token string">&quot;\u8DB3\u7403\u8FD0\u52A8\u5458C\u7F57&quot;</span><span class="token punctuation">;</span>
        <span class="token keyword">case</span> BASKETBALL<span class="token operator">:</span>
            <span class="token keyword">return</span> <span class="token string">&quot;\u7BEE\u7403\u8FD0\u52A8\u5458\u8A79\u59C6\u65AF&quot;</span><span class="token punctuation">;</span>
        <span class="token keyword">case</span> UNKNOWN<span class="token operator">:</span>
            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IllegalArgumentException</span><span class="token punctuation">(</span><span class="token string">&quot;\u672A\u77E5&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">default</span><span class="token operator">:</span>
            <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IllegalArgumentException</span><span class="token punctuation">(</span>
                    <span class="token string">&quot;\u8FD0\u52A8\u5458\u7C7B\u578B: &quot;</span> <span class="token operator">+</span> playerType<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u5982\u679C\u679A\u4E3E\u4E2D\u9700\u8981\u5305\u542B\u66F4\u591A\u4FE1\u606F\u7684\u8BDD\uFF0C\u53EF\u4EE5\u4E3A\u5176\u6DFB\u52A0\u4E00\u4E9B\u5B57\u6BB5\uFF0C\u6BD4\u5982\u4E0B\u9762\u793A\u4F8B\u4E2D\u7684 name\uFF0C\u6B64\u65F6\u9700\u8981\u4E3A\u679A\u4E3E\u6DFB\u52A0\u4E00\u4E2A\u5E26\u53C2\u7684\u6784\u9020\u65B9\u6CD5\uFF0C\u8FD9\u6837\u5C31\u53EF\u4EE5\u5728\u5B9A\u4E49\u679A\u4E3E\u65F6\u6DFB\u52A0\u5BF9\u5E94\u7684\u540D\u79F0\u4E86\u3002\u201D\u6211\u7EE7\u7EED\u8BF4\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">enum</span> <span class="token class-name">PlayerType</span> <span class="token punctuation">{</span>
    <span class="token function">TENNIS</span><span class="token punctuation">(</span><span class="token string">&quot;\u7F51\u7403&quot;</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    <span class="token function">FOOTBALL</span><span class="token punctuation">(</span><span class="token string">&quot;\u8DB3\u7403&quot;</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    <span class="token function">BASKETBALL</span><span class="token punctuation">(</span><span class="token string">&quot;\u7BEE\u7403&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token keyword">private</span> <span class="token class-name">String</span> name<span class="token punctuation">;</span>

    <span class="token class-name">PlayerType</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">this</span><span class="token punctuation">.</span>name <span class="token operator">=</span> name<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201Cget \u4E86\u5427\uFF0C\u4E09\u59B9\uFF1F\u201D</p><p>\u201C\u55EF\uFF0C\u6BD4\u8F83\u597D\u7406\u89E3\u3002\u201D</p><p>\u201C\u90A3\u63A5\u4E0B\u6765\uFF0C\u6211\u5C31\u6765\u8BF4\u70B9\u4E0D\u4E00\u6837\u7684\u3002\u201D</p><p>\u201C\u6765\u5427\uFF0C\u6211\u51C6\u5907\u597D\u4E86\u3002\u201D</p><p>\u201CEnumSet \u662F\u4E00\u4E2A\u4E13\u95E8\u9488\u5BF9\u679A\u4E3E\u7C7B\u578B\u7684 Set \u63A5\u53E3\uFF08\u540E\u9762\u4F1A\u8BB2\uFF09\u7684\u5B9E\u73B0\u7C7B\uFF0C\u5B83\u662F\u5904\u7406\u679A\u4E3E\u7C7B\u578B\u6570\u636E\u7684\u4E00\u628A\u5229\u5668\uFF0C\u975E\u5E38\u9AD8\u6548\u3002\u201D\u6211\u8BF4\uFF0C\u201C\u4ECE\u540D\u5B57\u4E0A\u5C31\u53EF\u4EE5\u770B\u5F97\u51FA\uFF0CEnumSet \u4E0D\u4EC5\u548C Set \u6709\u5173\u7CFB\uFF0C\u548C\u679A\u4E3E\u4E5F\u6709\u5173\u7CFB\u3002\u201D</p><p>\u201C\u56E0\u4E3A EnumSet \u662F\u4E00\u4E2A\u62BD\u8C61\u7C7B\uFF0C\u6240\u4EE5\u521B\u5EFA EnumSet \u65F6\u4E0D\u80FD\u4F7F\u7528 new \u5173\u952E\u5B57\u3002\u4E0D\u8FC7\uFF0CEnumSet \u63D0\u4F9B\u4E86\u5F88\u591A\u6709\u7528\u7684\u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u3002\u201D</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/enum/enum-02.png" alt=""></p><p>\u201C\u6765\u770B\u4E0B\u9762\u8FD9\u4E2A\u4F8B\u5B50\uFF0C\u6211\u4EEC\u4F7F\u7528 <code>noneOf()</code> \u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u521B\u5EFA\u4E86\u4E00\u4E2A\u7A7A\u7684 PlayerType \u7C7B\u578B\u7684 EnumSet\uFF1B\u4F7F\u7528 <code>allOf()</code> \u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u521B\u5EFA\u4E86\u4E00\u4E2A\u5305\u542B\u6240\u6709 PlayerType \u7C7B\u578B\u7684 EnumSet\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">EnumSetTest</span> <span class="token punctuation">{</span>
    <span class="token keyword">public</span> <span class="token keyword">enum</span> <span class="token class-name">PlayerType</span> <span class="token punctuation">{</span>
        TENNIS<span class="token punctuation">,</span>
        FOOTBALL<span class="token punctuation">,</span>
        BASKETBALL
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token class-name">EnumSet</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">PlayerType</span><span class="token punctuation">&gt;</span></span> enumSetNone <span class="token operator">=</span> <span class="token class-name">EnumSet</span><span class="token punctuation">.</span><span class="token function">noneOf</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumSetNone<span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token class-name">EnumSet</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">PlayerType</span><span class="token punctuation">&gt;</span></span> enumSetAll <span class="token operator">=</span> <span class="token class-name">EnumSet</span><span class="token punctuation">.</span><span class="token function">allOf</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumSetAll<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u6765\u770B\u4E00\u4E0B\u8F93\u51FA\u7ED3\u679C\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token punctuation">[</span>TENNIS<span class="token punctuation">,</span> FOOTBALL<span class="token punctuation">,</span> BASKETBALL<span class="token punctuation">]</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6709\u4E86 EnumSet \u540E\uFF0C\u5C31\u53EF\u4EE5\u4F7F\u7528 Set \u7684\u4E00\u4E9B\u65B9\u6CD5\u4E86\uFF0C\u89C1\u4E0B\u56FE\u3002</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/enum/enum-03.png" alt=""></p><p>\u201C\u9664\u4E86 EnumSet\uFF0C\u8FD8\u6709 EnumMap\uFF0C\u662F\u4E00\u4E2A\u4E13\u95E8\u9488\u5BF9\u679A\u4E3E\u7C7B\u578B\u7684 Map \u63A5\u53E3\u7684\u5B9E\u73B0\u7C7B\uFF0C\u5B83\u53EF\u4EE5\u5C06\u679A\u4E3E\u5E38\u91CF\u4F5C\u4E3A\u952E\u6765\u4F7F\u7528\u3002EnumMap \u7684\u6548\u7387\u6BD4 HashMap \u8FD8\u8981\u9AD8\uFF0C\u53EF\u4EE5\u76F4\u63A5\u901A\u8FC7\u6570\u7EC4\u4E0B\u6807\uFF08\u679A\u4E3E\u7684 ordinal \u503C\uFF09\u8BBF\u95EE\u5230\u5143\u7D20\u3002\u201D</p><p>\u201C\u548C EnumSet \u4E0D\u540C\uFF0CEnumMap \u4E0D\u662F\u4E00\u4E2A\u62BD\u8C61\u7C7B\uFF0C\u6240\u4EE5\u521B\u5EFA EnumMap \u65F6\u53EF\u4EE5\u4F7F\u7528 new \u5173\u952E\u5B57\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token class-name">EnumMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">PlayerType</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">&gt;</span></span> enumMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">EnumMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u6709\u4E86 EnumMap \u5BF9\u8C61\u540E\u5C31\u53EF\u4EE5\u4F7F\u7528 Map \u7684\u4E00\u4E9B\u65B9\u6CD5\u4E86\uFF0C\u89C1\u4E0B\u56FE\u3002</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/enum/enum-04.png" alt=""></p><p>\u548C HashMap\uFF08\u540E\u9762\u4F1A\u8BB2\uFF09\u7684\u4F7F\u7528\u65B9\u6CD5\u5927\u81F4\u76F8\u540C\uFF0C\u6765\u770B\u4E0B\u9762\u7684\u4F8B\u5B50\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token class-name">EnumMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">PlayerType</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">&gt;</span></span> enumMap <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">EnumMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enumMap<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">,</span><span class="token string">&quot;\u7BEE\u7403\u8FD0\u52A8\u5458&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enumMap<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>FOOTBALL<span class="token punctuation">,</span><span class="token string">&quot;\u8DB3\u7403\u8FD0\u52A8\u5458&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enumMap<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>TENNIS<span class="token punctuation">,</span><span class="token string">&quot;\u7F51\u7403\u8FD0\u52A8\u5458&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumMap<span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumMap<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumMap<span class="token punctuation">.</span><span class="token function">containsKey</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>enumMap<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token class-name">PlayerType</span><span class="token punctuation">.</span>BASKETBALL<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u6765\u770B\u4E00\u4E0B\u8F93\u51FA\u7ED3\u679C\u3002\u201D</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>{TENNIS=\u7F51\u7403\u8FD0\u52A8\u5458, FOOTBALL=\u8DB3\u7403\u8FD0\u52A8\u5458, BASKETBALL=\u7BEE\u7403\u8FD0\u52A8\u5458}
\u7BEE\u7403\u8FD0\u52A8\u5458
true
\u7BEE\u7403\u8FD0\u52A8\u5458
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u9664\u4E86\u4EE5\u4E0A\u8FD9\u4E9B\uFF0C\u300AEffective Java\u300B\u8FD9\u672C\u4E66\u91CC\u8FD8\u63D0\u5230\u4E86\u4E00\u70B9\uFF0C\u5982\u679C\u8981\u5B9E\u73B0\u5355\u4F8B\u7684\u8BDD\uFF0C\u6700\u597D\u4F7F\u7528\u679A\u4E3E\u7684\u65B9\u5F0F\u3002\u201D\u6211\u8BF4\u3002</p><p>\u201C\u7B49\u7B49\u4E8C\u54E5\uFF0C\u5355\u4F8B\u662F\u4EC0\u4E48\uFF1F\u201D\u4E09\u59B9\u6CA1\u7B49\u6211\u5F80\u4E0B\u8BF4\uFF0C\u5C31\u8FDE\u5FD9\u95EE\u9053\u3002</p><p>\u201C\u5355\u4F8B\uFF08Singleton\uFF09\u7528\u6765\u4FDD\u8BC1\u4E00\u4E2A\u7C7B\u4EC5\u6709\u4E00\u4E2A\u5BF9\u8C61\uFF0C\u5E76\u63D0\u4F9B\u4E00\u4E2A\u8BBF\u95EE\u5B83\u7684\u5168\u5C40\u8BBF\u95EE\u70B9\uFF0C\u5728\u4E00\u4E2A\u8FDB\u7A0B\u4E2D\u3002\u56E0\u4E3A\u8FD9\u4E2A\u7C7B\u53EA\u6709\u4E00\u4E2A\u5BF9\u8C61\uFF0C\u6240\u4EE5\u5C31\u4E0D\u80FD\u518D\u4F7F\u7528 <code>new</code> \u5173\u952E\u5B57\u6765\u521B\u5EFA\u65B0\u7684\u5BF9\u8C61\u4E86\u3002\u201D</p><p>\u201CJava \u6807\u51C6\u5E93\u6709\u4E00\u4E9B\u7C7B\u5C31\u662F\u5355\u4F8B\uFF0C\u6BD4\u5982\u8BF4 Runtime \u8FD9\u4E2A\u7C7B\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token class-name">Runtime</span> runtime <span class="token operator">=</span> <span class="token class-name">Runtime</span><span class="token punctuation">.</span><span class="token function">getRuntime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u201CRuntime \u7C7B\u53EF\u4EE5\u7528\u6765\u83B7\u53D6 Java \u7A0B\u5E8F\u8FD0\u884C\u65F6\u7684\u73AF\u5883\u3002\u201D</p><p>\u201C\u5173\u4E8E\u5355\u4F8B\uFF0C\u61C2\u4E86\u4E9B\u5427\uFF1F\u201D\u6211\u95EE\u4E09\u59B9\u3002</p><p>\u201C\u5662\u5662\u5662\u5662\u3002\u201D\u4E09\u59B9\u70B9\u4E86\u70B9\u5934\u3002</p><p>\u201C\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u5B9E\u73B0\u5355\u4F8B\u5E76\u975E\u6613\u4E8B\uFF0C\u6765\u770B\u4E0B\u9762\u8FD9\u79CD\u5199\u6CD5\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Singleton</span> <span class="token punctuation">{</span>  
    <span class="token keyword">private</span> <span class="token keyword">volatile</span> <span class="token keyword">static</span> <span class="token class-name">Singleton</span> singleton<span class="token punctuation">;</span> 
    <span class="token keyword">private</span> <span class="token class-name">Singleton</span> <span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span>  
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">Singleton</span> <span class="token function">getSingleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>  
    <span class="token keyword">if</span> <span class="token punctuation">(</span>singleton <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">synchronized</span> <span class="token punctuation">(</span><span class="token class-name">Singleton</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> 
        <span class="token keyword">if</span> <span class="token punctuation">(</span>singleton <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>  
            singleton <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Singleton</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
        <span class="token punctuation">}</span>  
        <span class="token punctuation">}</span>  
    <span class="token punctuation">}</span>  
    <span class="token keyword">return</span> singleton<span class="token punctuation">;</span>  
    <span class="token punctuation">}</span>  
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u8981\u7528\u5230 volatile\u3001synchronized \u5173\u952E\u5B57\u7B49\u7B49\uFF0C\u4F46\u679A\u4E3E\u7684\u51FA\u73B0\uFF0C\u8BA9\u4EE3\u7801\u91CF\u51CF\u5C11\u5230\u6781\u81F4\u3002\u201D</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">enum</span> <span class="token class-name">EasySingleton</span><span class="token punctuation">{</span>
    INSTANCE<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u201C\u5C31\u8FD9\uFF1F\u201D\u4E09\u59B9\u7741\u5927\u4E86\u773C\u775B\u3002</p><p>\u201C\u5BF9\u554A\uFF0C\u679A\u4E3E\u9ED8\u8BA4\u5B9E\u73B0\u4E86 Serializable \u63A5\u53E3\uFF0C\u56E0\u6B64 Java \u865A\u62DF\u673A\u53EF\u4EE5\u4FDD\u8BC1\u8BE5\u7C7B\u4E3A\u5355\u4F8B\uFF0C\u8FD9\u4E0E\u4F20\u7EDF\u7684\u5B9E\u73B0\u65B9\u5F0F\u4E0D\u5927\u76F8\u540C\u3002\u4F20\u7EDF\u65B9\u5F0F\u4E2D\uFF0C\u6211\u4EEC\u5FC5\u987B\u786E\u4FDD\u5355\u4F8B\u5728\u53CD\u5E8F\u5217\u5316\u671F\u95F4\u4E0D\u80FD\u521B\u5EFA\u4EFB\u4F55\u65B0\u5B9E\u4F8B\u3002\u201D\u6211\u8BF4\u3002</p><p>\u201C\u597D\u4E86\uFF0C\u5173\u4E8E\u679A\u4E3E\u5C31\u8BB2\u8FD9\u4E48\u591A\u5427\uFF0C\u4E09\u59B9\uFF0C\u4F60\u628A\u8FD9\u4E9B\u4EE3\u7801\u90FD\u624B\u6572\u4E00\u904D\u5427\uFF01\u201D</p><p>\u201C\u597D\u52D2\uFF0C\u8FD9\u5C31\u5B89\u6392\u3002\u4E8C\u54E5\uFF0C\u4F60\u53BB\u4F11\u606F\u5427\u3002\u201D</p><p>\u201C\u55EF\u55EF\u3002\u201D\u8BB2\u4E86\u8FD9\u4E48\u591A\uFF0C\u5FC5\u987B\u8DD1\u53BB\u62BD\u70DF\u673A\u90A3\u91CC\u5B89\u6392\u4E00\u6839\u534E\u5B50\u4E86\u3002</p><hr>`,66),k=s("\u6700\u8FD1\u6574\u7406\u4E86\u4E00\u4EFD\u725B\u903C\u7684\u5B66\u4E60\u8D44\u6599\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8EJava\u57FA\u7840\u90E8\u5206\uFF08JVM\u3001Java\u96C6\u5408\u6846\u67B6\u3001\u591A\u7EBF\u7A0B\uFF09\uFF0C\u8FD8\u56CA\u62EC\u4E86 "),r=n("strong",null,"\u6570\u636E\u5E93\u3001\u8BA1\u7B97\u673A\u7F51\u7EDC\u3001\u7B97\u6CD5\u4E0E\u6570\u636E\u7ED3\u6784\u3001\u8BBE\u8BA1\u6A21\u5F0F\u3001\u6846\u67B6\u7C7BSpring\u3001Netty\u3001\u5FAE\u670D\u52A1\uFF08Dubbo\uFF0C\u6D88\u606F\u961F\u5217\uFF09 \u7F51\u5173",-1),d=s(" \u7B49\u7B49\u7B49\u7B49\u2026\u2026\u8BE6\u60C5\u6233\uFF1A"),v={href:"https://tobebetterjavaer.com/pdf/programmer-111.html",target:"_blank",rel:"noopener noreferrer"},m=s("\u53EF\u4EE5\u8BF4\u662F2022\u5E74\u5168\u7F51\u6700\u5168\u7684\u5B66\u4E60\u548C\u627E\u5DE5\u4F5C\u7684PDF\u8D44\u6E90\u4E86"),b=n("p",null,[s("\u5173\u6CE8\u4E8C\u54E5\u7684\u539F\u521B\u516C\u4F17\u53F7 "),n("strong",null,"\u6C89\u9ED8\u738B\u4E8C"),s("\uFF0C\u56DE\u590D"),n("strong",null,"111"),s(" \u5373\u53EF\u514D\u8D39\u9886\u53D6\u3002")],-1),y=n("p",null,[n("img",{src:"http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png",alt:""})],-1);function g(w,T){const a=e("ExternalLinkIcon");return t(),c("div",null,[u,n("p",null,[k,r,d,n("a",v,[m,o(a)])]),b,y])}var L=p(i,[["render",g],["__file","enum.html.vue"]]);export{L as default};