是誰破壞了列舉型別?

2021-08-25 20:41:13 字數 1675 閱讀 9320

引言:

列舉型別給我們的開發帶來了很多的好處,它是個非常典型的乙個單例模式,但這樣做優越的功能,給我們帶來的不全是好處。

當我們開發的介面給別人呼叫時,往往因為業務需要,新增乙個字段型別等等,就也就需要呼叫端一起更新api包,這裡想方設法的去解決這個問題,但這裡深深自問題,這是否算是在破壞著這個列舉型別 了呢?

問題:

為了不去經常性的去增加列舉型別的字段,我選擇了加方法給出設定值的介面來做個測試,但這樣的

測試出現了乙個問題。

示例:

列舉類如下:

/**

* @desc 配送物品型別列舉類

*/public enum goodstype

goodstype(string value)

private string value;

public string getvalue()

}

!!! 發現問題:

在這裡面出現了乙個問題,當這個列舉類在序列化和反序列化之後,對應的值全為預設的引數值了。不管你怎麼改變它的值。

以下就做個實驗:

服務端:

public class server 

}

客戶端:

public class client 

}

服務端控制台顯示:

埠已啟動...

1服務端測試完成

p.s:服務端接到的值為預設值1.

客戶端控制台顯示:

before write : goodstype = 22

after write : goodstype = 22

客戶端測試完成

p.s:客戶端接到的值為修改後的值22.

問題原因:

在傳遞列舉型別時,其實io中,有專門對它的傳輸方式,原始碼如下:

private void writeenum(enum en,    

objectstreamclass desc,

boolean unshared)

throws ioexception

在這裡面,列舉傳遞過去的只是類路徑、乙個型別名和乙個例項名,也就如這裡面的gift這個名字,

而不會把gift這個值給傳遞過去,當到傳伺服器端的時候,伺服器端轉換過來的也是該列舉類,對應的伺服器端gift類的值而已。

結論:

其實這樣的變動想法是在場景應用上而引發了一次思考,這樣的做法,其實已經在破壞了列舉類的初衷了。罪魁禍首的人是,但經歷這一次的風暴,讓我從中對列舉類了解更深刻了。呵呵。

小菜破壞了小海藻

話說時下電視劇集 x居 正在熱播中。一貫兩耳不聞窗外事,一心一意為人民服務,廢寢忘食寫 的小菜也被這一夜之間傳遍神州大地的 x居 感染了,寫了一半就跑去看了 電視劇集看完了,小菜繼續寫 了 我靠,看來 x居 的影響真不小啊,連小菜也被影響了,堆疊被破壞了,如果你運氣好,就能看到列印出兩個 俺們是80...

讓你覺得破壞了封裝性的擴充套件方法

擴充套件方法 源於對擴充套件方法的了解是來自list的where order groupby等方法的使用,智慧型感知提示這些方法都是擴充套件方法,於是msdn上查閱後總結如下自定義擴充套件方法 將字串轉換為int,拷貝 namespace mycommon 微軟規定,擴充套件方法 1 必須是靜態類和...

到底是誰害了誰?

到底是誰害了誰?和乙個獵頭朋友聊天,他說最近在找乙個軟體架構師的職務,年薪30萬。不知道朋友們對30w的年薪是什麼概念,但看了要求你就會更驚訝。如果真象jd裡面要求的那樣年薪30w實在是有點低了。他說乙個公司的做hr做的好的也不只這些,何況還有年終獎,績效什麼的。在中國做技術的其實是很慘的。從以前拼...