- /* ### 枚举类型复习笔记 ###
- *
- * JDk1.5之后引入了枚举类型,枚举定义如下:
- *
- * [public] enum 枚举名称{
- * 枚举对象1,枚举对象2,...,枚举对象N ;
- * }
- *
- * 1)枚举对象的定义必须要于存在相应的构造方法相对应
- * 2)构造方法必须是private,从而保证构造函数只能在内部使用
- * 3)枚举类型是一种类型,用于定义变量,以限制变量的赋值
- * 4)赋值时通过"枚举名.值"来取得相关枚举中的值
- * 5)枚举列表必须写在最前面,否则编译出错
- * 6)枚举也可以象一般的类一样添加方法和属性
- *
- * # 枚举只有一个成员时,就可以作为一种单例的实现方式。
- *
- * ### 匿名内部类复习笔记 ###
- *
- * 1,匿名内部类其实就是内部类的简写格式。
- * 2,定义内部类的前提:
- * 内部类必须是继承一个类或者实现接口。
- * 3,匿名内部类的格式:new 父类或接口(){定义子类的内容}
- * 4,其实匿名内部类就是一个带内容的匿名子类对象。
- */
- package demo;
- public class EnumTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- // 枚举类型是一种类型,用于定义变量,以限制变量的赋值
- // 赋值时通过"枚举名.值"来取得相关枚举中的值
- WeekDay weekDay1 = WeekDay.MON;
- System.out.println(weekDay1);
- System.out.println(weekDay1.ordinal());
- System.out.println(WeekDay.valueOf("SUN"));
- System.out.println(WeekDay.values().length);
- }
- public enum WeekDay {
- // 枚举列表必须写在最前面,否则编译出错
- // 就相当于这句话:public final static WeekDay SUN = new WeekDay();
- SUN,MON,TUE,WED,THI,FRI,SAT;
- //构造函数只能是private, 从而保证构造函数只能在内部使用
- private WeekDay(){System.out.println("first");} //构造方法
- private WeekDay(int day){System.out.println("second");}//有参构造方法
- }
- public enum TrafficLamp{
- //匿名内部类的格式:new 父类或接口(){定义子类的内容}
- //其实匿名内部类就是一个带内容的匿名子类对象
- RED(30){
- @Override
- //内部类必须是继承一个类或者实现接口
- //匿名子类对象要覆盖父类的nextLamp()方法
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return GREEN;
- }
- },
- GREEN(45){
- @Override
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return YELLOW;
- }
- },
- YELLOW(5){
- @Override
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return RED;
- }
- };
- public abstract TrafficLamp nextLamp();
- // 枚举也可以象一般的类一样添加方法和属性
- private int time;
- private TrafficLamp(int time){this.time = time;}
- }
- }
- /* 匿名内部类(from thinking in java 3th)
- 简单地说:匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?
- 如果满足下面的一些条件,使用匿名内部类是比较合适的:
- 1)只用到类的一个实例。
- 2)类在定义后马上用到。
- 3)类非常小(SUN推荐是在4行代码以下)
- 4)给类命名并不会导致你的代码更容易被理解。
- 在使用匿名内部类时,要记住以下几个原则:
- 1)匿名内部类不能有构造方法。
- 2)匿名内部类不能定义任何静态成员、方法和类。
- 3)匿名内部类不能是public,protected,private,static。
- 4)只能创建匿名内部类的一个实例。
- 5)一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
- 6)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
- */
- /* ### 枚举类型复习笔记 ###
- *
- * JDk1.5之后引入了枚举类型,枚举定义如下:
- *
- * [public] enum 枚举名称{
- * 枚举对象1,枚举对象2,...,枚举对象N ;
- * }
- *
- * 1)枚举对象的定义必须要于存在相应的构造方法相对应
- * 2)构造方法必须是private,从而保证构造函数只能在内部使用
- * 3)枚举类型是一种类型,用于定义变量,以限制变量的赋值
- * 4)赋值时通过"枚举名.值"来取得相关枚举中的值
- * 5)枚举列表必须写在最前面,否则编译出错
- * 6)枚举也可以象一般的类一样添加方法和属性
- *
- * # 枚举只有一个成员时,就可以作为一种单例的实现方式。
- *
- * ### 匿名内部类复习笔记 ###
- *
- * 1,匿名内部类其实就是内部类的简写格式。
- * 2,定义内部类的前提:
- * 内部类必须是继承一个类或者实现接口。
- * 3,匿名内部类的格式:new 父类或接口(){定义子类的内容}
- * 4,其实匿名内部类就是一个带内容的匿名子类对象。
- */
- package demo;
- public class EnumTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- // 枚举类型是一种类型,用于定义变量,以限制变量的赋值
- // 赋值时通过"枚举名.值"来取得相关枚举中的值
- WeekDay weekDay1 = WeekDay.MON;
- System.out.println(weekDay1);
- System.out.println(weekDay1.ordinal());
- System.out.println(WeekDay.valueOf("SUN"));
- System.out.println(WeekDay.values().length);
- }
- public enum WeekDay {
- // 枚举列表必须写在最前面,否则编译出错
- // 就相当于这句话:public final static WeekDay SUN = new WeekDay();
- SUN,MON,TUE,WED,THI,FRI,SAT;
- //构造函数只能是private, 从而保证构造函数只能在内部使用
- private WeekDay(){System.out.println("first");} //构造方法
- private WeekDay(int day){System.out.println("second");}//有参构造方法
- }
- public enum TrafficLamp{
- //匿名内部类的格式:new 父类或接口(){定义子类的内容}
- //其实匿名内部类就是一个带内容的匿名子类对象
- RED(30){
- @Override
- //内部类必须是继承一个类或者实现接口
- //匿名子类对象要覆盖父类的nextLamp()方法
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return GREEN;
- }
- },
- GREEN(45){
- @Override
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return YELLOW;
- }
- },
- YELLOW(5){
- @Override
- public TrafficLamp nextLamp() {
- // TODO Auto-generated method stub
- return RED;
- }
- };
- public abstract TrafficLamp nextLamp();
- // 枚举也可以象一般的类一样添加方法和属性
- private int time;
- private TrafficLamp(int time){this.time = time;}
- }
- }
- /* 匿名内部类(from thinking in java 3th)
- 简单地说:匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?
- 如果满足下面的一些条件,使用匿名内部类是比较合适的:
- 1)只用到类的一个实例。
- 2)类在定义后马上用到。
- 3)类非常小(SUN推荐是在4行代码以下)
- 4)给类命名并不会导致你的代码更容易被理解。
- 在使用匿名内部类时,要记住以下几个原则:
- 1)匿名内部类不能有构造方法。
- 2)匿名内部类不能定义任何静态成员、方法和类。
- 3)匿名内部类不能是public,protected,private,static。
- 4)只能创建匿名内部类的一个实例。
- 5)一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
- 6)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
- */