A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史卫平 黑马帝   /  2011-9-9 15:20  /  2147 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在高新技术里面枚举那块,枚举类:就是下面的类
java.lang
类 Enum<E extends Enum<E>>

java.lang.Object
  java.lang.Enum<E>
所有已实现的接口:
Serializable, Comparable<E>


public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, Serializable
这是所有 Java 语言枚举类型的公共基本类。


api中Enum这个抽象类中只有valueOf方法

为什么程序中Enum的实现类WeekDay.后面会有
values
valueOf(String arg0)
这两个方法
哪来的啊

WeekDay这个枚举类跟Enum类什么关系?

WeekDay.valueOf("SUN")
weekday2.valueOf("SUN")
结果一样的
感觉好别扭啊
毕竟WeekDay weekday2 = WeekDay.MON;[code=java]public class EnumTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                WeekDay weekday1 = WeekDay.SUN;
                WeekDay weekday2 = WeekDay.MON;
                System.out.println(weekday2.valueOf("SUN") );
                System.out.println(WeekDay.valueOf("SUN"));
                for(WeekDay wd:weekday2.values())
                {
                        System.out.println(wd);
                }
               
        }
        public enum WeekDay{
               
                SUN{
                        public WeekDay nextDay(){
                                return MON;
                        }
                },MON{
                        public WeekDay nextDay(){
                                return SUN;
                        }
                };
                private WeekDay(){}
                public abstract WeekDay nextDay();
        }

}[/code]另外
在反射的那章一开始,我就发现
System.out.println(byte.class==Byte.TYPE.getClass());
等类似的
System.out.println(int.class==Integer.TYPE.getClass());
打印的都是false
这边感觉有点晕
思路清晰解释一下
[ 本帖最后由 史卫平 于 2011-09-09  23:11 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看看大家的回答!

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-9-9 15:44:31
沙发
System.out.println(byte.class==Byte.TYPE.getClass());
这两个怎么不等啊
我是不是又把什么搞浑了
回复 使用道具 举报
黑马网友  发表于 2011-9-9 21:29:43
藤椅
额……貌似没有看懂,能再把问题描述的清楚些么~
回复 使用道具 举报
关于System.out.println(byte.class==Byte.TYPE.getClass());

byte.class==Byte.TYPE 返回的是TRUE
.type是返回基本类型 所以Byte.TYPE 就是基本类型byte的字节码,这时候你再去.getClass,那么返回class java.lang.Class了

System.out.println(int.class==Integer.TYPE.getClass()); 同理
[ 本帖最后由 chengjj520 于 2011-09-10  01:27 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-13 09:22:32
报纸
呵呵,中秋这两天由于回家了,所以一直没有上网额……

恩,在这里先简单说一下最后一个问题吧!
其实这个问题,楼上的童鞋已经回答的很正确了~
如果你还是觉得不容易理解的话,那你可以执行一下这三行代码,你就明白了:[code=java]System.out.println("byte.class.getName() = " + byte.class.getName());
System.out.println("Byte.TYPE.getName() = " + byte.class.getName());
System.out.println("Byte.TYPE.getClass().getName() = " + Byte.TYPE.getClass().getName());[/code]至于前面几个问题,我也不是特别清楚,所以百度了一下,得到的结果是:
enum里面的每个元素都是java.annotation.ElementType类型,这些对象就有values()和valueOf()方法了
至于它们为什么是ElementType类型,以及可以证明它们是这个类型的证据,我还需要再研究下呵呵

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-14 15:07:10
地板
public enum ElementType   extends Enum<ElementType>

public abstract class Enum<E extends Enum<E>>extends Object implements Comparable<E>, Serializable这是所有 Java 语言枚举类型的公共基本类。


我的问题应该跟着两句话关系比较大,不知道谁可以解释一下,我一时还看不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马