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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 自由自在2014 中级黑马   /  2014-2-17 19:28  /  1324 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
    }
}}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
泛型的问题吧
回复 使用道具 举报
等待大神回答
回复 使用道具 举报
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量  访问的。
可是也可以用具体的类对象+.变量去访问。
解释是,因为static声明的变量时为所有类对象所共有的,当然可以用类对象去访问该元素。
但是!!不建议这么做,因为体现不出它是为所有对象共有的特性,它是属于类的,不是为某个特定的类对象所拥有的。
枚举值 不就是static成员么。 道理应该一样吧。

评分

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

查看全部评分

回复 使用道具 举报 1 0
出现黄线代表的是警告,在方法前加上注解@SuppressWarnings("static-access")就可以了,那为什么会出现警告呢?因为枚举中valueOf( )是一个静态方法,我们都知道静态方法只能通过静态方法区调用,如楼上所说,因为static声明的变量时为所有类对象所共有的,当然可以用类对象去访问该元素。
但是!!不建议这么做,但是并不代表是错误的,所以可以运行出结果。

评分

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

查看全部评分

回复 使用道具 举报
李金中 发表于 2014-2-17 21:04
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量  访问的。
可是也可以用具体的类对 ...

谢谢,好像是这样理解的
回复 使用道具 举报
李金中 发表于 2014-2-17 21:04
我记得 学C++的时候,遇到过类似问题。
一个static变量 是用类名+. 变量  访问的。
可是也可以用具体的类对 ...

大神,厉害,跪舔
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马