黑马程序员技术交流社区
标题:
枚举类型问题
[打印本页]
作者:
自由自在2014
时间:
2014-2-17 19:28
标题:
枚举类型问题
import java.io.IOException;
class Text{
public static void main(String[] args) throws IOException{
TrafficLamp lamp=TrafficLamp.RED;
System.out.println(
lamp.YELLOW
); // 为什么下面会出现黄曲线? 为什么又能运行出结果呢?
System.out.println(
lamp.valueOf("YELLOW").name()
); //为什么会出现黄曲线?为什么又能运行出结果呢?
System.out.println(lamp.nextLamp());
}
public enum TrafficLamp{
RED(40){
public TrafficLamp nextLamp(){
return GREEN;
};
},GREEN(30){ public TrafficLamp nextLamp(){
return YELLOW;
};
},YELLOW(10){
public TrafficLamp nextLamp(){
return RED;
};
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time=time;
}
}}
作者:
asvsass
时间:
2014-2-17 20:10
泛型的问题吧
作者:
袁梦希
时间:
2014-2-17 20:34
等待大神回答
作者:
李金中
时间:
2014-2-17 21:04
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量 访问的。
可是也可以用具体的类对象+.变量去访问。
解释是,因为static声明的变量时为所有类对象所共有的,当然可以用类对象去访问该元素。
但是!!不建议这么做,因为体现不出它是为所有对象共有的特性,它是属于类的,不是为某个特定的类对象所拥有的。
枚举值 不就是static成员么。 道理应该一样吧。
作者:
徐青松
时间:
2014-2-17 23:05
出现黄线代表的是警告,在方法前加上注解@SuppressWarnings("static-access")就可以了,那为什么会出现警告呢?因为枚举中valueOf( )是一个静态方法,我们都知道静态方法只能通过静态方法区调用,如楼上所说,因为static声明的变量时为所有类对象所共有的,当然可以用类对象去访问该元素。
但是!!不建议这么做,但是并不代表是错误的,所以可以运行出结果。
作者:
自由自在2014
时间:
2014-2-18 19:36
李金中 发表于 2014-2-17 21:04
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量 访问的。
可是也可以用具体的类对 ...
谢谢,好像是这样理解的
作者:
小Zeor………
时间:
2014-2-24 01:19
李金中 发表于 2014-2-17 21:04
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量 访问的。
可是也可以用具体的类对 ...
大神,厉害,跪舔
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2