Re: [問題] 關於 nested enum
抱歉,本篇文章回應 qrtt1 及 alien 板友的回答 ^^
首先,在method傳遞的時候,確實無法將 BigType.MiddleType1.A 視為是一個 BigType
而是一個 MiddleType1
因此,在這個 abstract class 下,如果我有 MiddleType1 以及 MiddleType2 的 Enum class
那麼在method傳遞過程中,就只能依照所有的 Enum class 去進行 overload
例如
public void ProcessEnum(MiddleType1 mt1)
public void ProcessEnum(MiddleType2 mt2)
而不能單純地使用
public void ProcessEnum(BigType bt)
去處理所有 BigType 這個 class 下的所有 Enum class
<D>: : 然而要在method中傳遞這個 BigType.MiddleType1.A 的時候
: : 接收的method並不能將之視為一個BigType進行運作
: 你意思是你想把它視為 BigType 還是怎樣?..
是的!!!!
: : 而且 MiddleType1.A 與 MiddleType2.A 會是同一個值
: 這個不會是同一個吧.
: BigType.MiddleType1 和 BigType.MiddleType2 是不同的 enum (class).
: 兩者的 A 雖然名字一樣但不可能是同一個值.
: 如果你說的是其 Ordinal value or string value, 這個
: 與 nested 與否就沒關係了
嗯,我表達的不完整,應該說這兩個值會有一樣的可能性 (ordinal value)
: : 想請問板上朋友,要如何才能夠把 nested enum 當作一般的 enum 來操作呢
: 其實我看不太明白 XD
: 不如你弄一個真正的例子說明你想做什麼吧
: 可是 Java enum 本身就不提供 inheritence (我看你的情況
: 像 enum inheritence). 既然人家已經明確不提供某種功能
: 你也凹不來, 不然就乾脆用 class 自己模擬enum 的使用吧
: (反正Java5 以前也是這樣弄)
: alien
上面的例子可能不夠容易說明,舉個最近Java板流行的例子好了
小弟想用 nested enum 的原因如下
忍者 {
public enum 火影村 {
[DescriptionAttribute("奶奶")]
綱手,
自來也,
長舌頭,
..etc
}
public enum 風影村 {
我愛羅,
手鞠,
..etc
}
public enum 甲賀 {
甲賀弦之介
陽炎
..etc
}
public enum 伊賀 {
朧
藥師寺_天膳
..etc
}
}
所以,如果我想利用DescriptionAttribute取得某個忍者的中文說明
那麼,便得知道這個忍者是屬於火影村、風影村、甲賀、或是伊賀了
在處理上就麻煩許多 :(
不知道這樣的例子大家能不能接受 ^^"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.228.146.66
推
03/06 17:28, , 1F
03/06 17:28, 1F
推
03/06 17:30, , 2F
03/06 17:30, 2F
討論串 (同標題文章)