作者violet90079 (ˊ__>ˋ)
看板java
標題Re: [問題] OCJP SE6題目 - enum
時間Mon Feb 20 00:19:26 2017
※ 引述《uopsdod (pcman)》之銘言:
: Given:
: enum Exaplme {ONE, TWO, THREE}
: Which statement is true?
: A. The expressions (ONE == ONE) and ONE.equals(ONE) are both guaranteed to be
: true.
: B. The expression (ONE < TWO) is guaranteed to be true and ONE.compareTo(TWO)
: is guaranteed to be less than one.
: C. The Example values cannot be used in a raw java.utilHash.Map; instead, the
: programmer must use a java.util.EnumMap.
: d. The Example values can be used in a java.tuil.SortedSet, but the set will
: NOT be sorted because enumerated types do NOT implement java.lang.Comparable
: ------------------
: The answer: A
: 想請問B,C,D是哪部分錯了, 這題不會得太多,實在沒有辦法做判斷。
: A我倒是較能理解,因為ONE其實會是一個繼承Enum的類別,所以ONE==ONE物件記憶體位置
: 相同; ONE.equals(ONE), 我只知道System.out.println(Example.ONE); 會得到字串
: ONE, 所以知道會對。
: 跟大家請教一下了,謝謝
看一下父類別的原始碼其實不難理解
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Enum.java
Enum 除實作 java.lang.Comparable<E> 外,
還將 equals() 及 hashCode() 都宣告為 final
enum 不是基本型態,因此是沒辦法使用 "<" 運算元的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.55.161
※ 文章網址: https://www.ptt.cc/bbs/java/M.1487521168.A.626.html
推 uopsdod: 感謝。 本來以為enum會重在內部自己新定義 < 運算元。 02/20 21:01
→ ssccg: java沒有operator overloading,唯一較特別的只有string + 02/21 07:15
→ uopsdod: 感謝大家 了解了! 02/21 23:49
→ adrianshum: 唯「二」比較特別的是String 的 + 和+= :P 02/23 09:38