黑马程序员技术交流社区
标题:
稍微想一点东西,就不懂了
[打印本页]
作者:
史卫平
时间:
2011-9-9 15:20
标题:
稍微想一点东西,就不懂了
在高新技术里面枚举那块,枚举类:就是下面的类
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 编辑
]
作者:
匿名
时间:
2011-9-9 15:44
System.out.println(byte.class==Byte.TYPE.getClass());
这两个怎么不等啊
我是不是又把什么搞浑了
作者:
匿名
时间:
2011-9-9 21:29
额……貌似没有看懂,能再把问题描述的清楚些么~
作者:
程钧杰
时间:
2011-9-10 01:09
关于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 编辑
]
作者:
匿名
时间:
2011-9-13 09:22
呵呵,中秋这两天由于回家了,所以一直没有上网额……
恩,在这里先简单说一下最后一个问题吧!
其实这个问题,楼上的童鞋已经回答的很正确了~
如果你还是觉得不容易理解的话,那你可以执行一下这三行代码,你就明白了:[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类型,以及可以证明它们是这个类型的证据,我还需要再研究下呵呵
作者:
匿名
时间:
2011-9-14 15:07
public enum ElementType extends Enum<ElementType>
public abstract class Enum<E extends Enum<E>>extends Object implements Comparable<E>, Serializable这是所有 Java 语言枚举类型的公共基本类。
我的问题应该跟着两句话关系比较大,不知道谁可以解释一下,我一时还看不懂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2