黑马程序员技术交流社区
标题:
请问这里怎么理解
[打印本页]
作者:
911趣购
时间:
2014-3-31 00:10
标题:
请问这里怎么理解
package Test;
public abstract class WeekDay {
private WeekDay(){}
public final static WeekDay SUN=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public final static WeekDay MON=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
//采用抽象方法将ifelse语句转换为一个独立的类
public abstract WeekDay nextDay();
/* public WeekDay nextDay(){
if(this==SUN){
return MON;
}else{
return SUN;
}
}*/
//打印这个枚举对象
public String toString(){
return this==SUN?"SUN":"MON";
}
}
复制代码
今天看到张老师的枚举类型的课程 遇到了这里不明白的 该怎么理解呢
return this==SUN?"SUN":"MON";---------这里的this===为什么等于的是SUN呢?
作者:
ehuashao
时间:
2014-3-31 10:11
public final static WeekDay MON=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
复制代码
上面这个内部类的引用为MON,调用它的nextDay方法返回的是个引用SUN。当我们在主函数调用的时候:
WeekDay weekday = new WeekDay.MON;
System.out.println(weekday.nextDay().toString());
复制代码
上面代码的输出是SUN。
现在weekday引用指向MON,所以调用weekday.nextDay()返回的是SUN的引用。之后再调用toString()方法,就相当于SUN.toString()。return this==SUN?"SUN":"MON";这里的this指的是所创建引用调用nextDay()方法后所返回的nextday的引用,现在创建的引用为MON,调用nextDay()返回SUN,所以判断它是不是SUN,是就返回SUN,不是就返回MON.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2