作者huge (huge)
站内java
标题Re: [问题] 关於 nested enum
时间Thu Mar 6 17:10:27 2008
抱歉,本篇文章回应 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
1F:推 qrtt1:没有人因为收养了没有血缘孩子, 就变成相同的祖先 03/06 17:28
2F:推 TonyQ:你需要的不是enum -_-;; enum不需要负担这些 03/06 17:30