黑马程序员 枚举、注解
2013-12-14 22:40
232 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
枚举和注解都是jdk1.5中的新特性,在java发展之时去掉了C++中的枚举属性,但是随着Java应用越来越广泛,为了适应各种需求,又重新加上了枚举这类属性。它能更加方便的操作一些特殊的类。注解也一样,是为了方便使用某些功能而诞生的。它们都是和类一样,可以独立创建和使用的。
枚举:
在我看来,Java中的枚举就是一个单例模式的扩展,单例模式是在类中创建一个对象,并对外提供公共的访问方式。而枚举的每一个属性就是一个自身的类,它省去了创建自己这个类型对象的语句。然后在枚举中添加了一些其特有的方法,但是这与普通类中方法差别并不大,都是对其中自己类对象的操作。所以,枚举不过是一种特殊的类而已,不需要花很多时间去掌握,当需要用到其中方法的时候可以去查阅API。
因为枚举是单例模式的增强版,所以其构造函数必须私有化。外界可以只用枚举类名来调用,且其中的每一个自身对象都实现了枚举中的所有方法。
下面是一个枚举的例子:
注解 (Annotation):
jdk1.5提供的3个主要注解:
1. @SuppressWarmings:忽略警告(可以是各种类型的警告)
2. @Deprecated:声明已过时的方法
3. @Override:用于覆盖,测试是否为复写的方法
这个最常见的注解,也是最可能用到的注解。但是,注解也可以自己创建,并且写入自己的属性和方法,并且用于特定的地方。
需要注意的是:
注解也是有生命周期的,并且可以声明存在的位置
这里便涉及到两个元注解:
Retention:声明注解的周期(java源文件时检测,class文件时检测,runtime时检测)
Target:声明注解可以用的位置(如类上,方法上,属性上等等)
下面是一个自己写的注解例子:
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
枚举和注解都是jdk1.5中的新特性,在java发展之时去掉了C++中的枚举属性,但是随着Java应用越来越广泛,为了适应各种需求,又重新加上了枚举这类属性。它能更加方便的操作一些特殊的类。注解也一样,是为了方便使用某些功能而诞生的。它们都是和类一样,可以独立创建和使用的。
枚举:
在我看来,Java中的枚举就是一个单例模式的扩展,单例模式是在类中创建一个对象,并对外提供公共的访问方式。而枚举的每一个属性就是一个自身的类,它省去了创建自己这个类型对象的语句。然后在枚举中添加了一些其特有的方法,但是这与普通类中方法差别并不大,都是对其中自己类对象的操作。所以,枚举不过是一种特殊的类而已,不需要花很多时间去掌握,当需要用到其中方法的时候可以去查阅API。
因为枚举是单例模式的增强版,所以其构造函数必须私有化。外界可以只用枚举类名来调用,且其中的每一个自身对象都实现了枚举中的所有方法。
下面是一个枚举的例子:
public enum TrafficLamp{ //枚举的3个属性,red,green,yellow;都是它本类的对象 RED(45){ public TrafficLamp nextLamp() { return GREEN; } }, GREEN(30){ public TrafficLamp nextLamp(){ return YELLOW; } }, YELLOW(3){ public TrafficLamp nextLamp() { return RED; } }; //类中定义了一个抽象的方法,下一个灯,所以每一个对象都必须实现这个方法,这里用的是内部类方式 public abstract TrafficLamp nextLamp(); private int time; //私有化的构造函数,必须接收一个时间值 private TrafficLamp(int time){ this.time = time; } }这里可以看到,枚举与普通的类区别并不大,和单例模式差不多,只不过有了多个自身的对象而已。但是,有了枚举后,我们在许多应运方面更加灵活了,不需要记住必须new哪几个对象,直接写在枚举中,只能调用其中有的对象。
注解 (Annotation):
jdk1.5提供的3个主要注解:
1. @SuppressWarmings:忽略警告(可以是各种类型的警告)
2. @Deprecated:声明已过时的方法
3. @Override:用于覆盖,测试是否为复写的方法
这个最常见的注解,也是最可能用到的注解。但是,注解也可以自己创建,并且写入自己的属性和方法,并且用于特定的地方。
需要注意的是:
注解也是有生命周期的,并且可以声明存在的位置
这里便涉及到两个元注解:
Retention:声明注解的周期(java源文件时检测,class文件时检测,runtime时检测)
Target:声明注解可以用的位置(如类上,方法上,属性上等等)
下面是一个自己写的注解例子:
//声明该注解可以在内存运行时检测,声明周期长 @Retention(RetentionPolicy.RUNTIME) //声明该注解定义在类上 @Target(ElementType.TYPE) //注解定义的格式,和类差不多,但是返回值变成了@interface public @interface ItcastAnnotation { //注解的属性,在加注解时必须添上,如果加了缺省方式 default,则可不写,为默认值 String color() default "blue" ; String value() default "false"; int[] arr() default {1,3,5}; }这就是一个最简单的注解,当使用时,我们必须加上属性color,value,int[]。当然,这里写了缺省值,也可以不加。这些属性是为了写入不同的内容而存在的,比如SuppressWarmings("depracation")就是忽略过时的警告。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员_内省&注解&枚举知识总结
- 黑马程序员_java_基础加强_静态导入_反射_枚举_注解_内省_泛型
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- 黑马程序员_自动装箱、枚举、可变参数、注解、JavaBean
- 黑马程序员——Java高新技术---枚举、内省、类加载器、注解
- 黑马程序员——java高新(枚举、内省、注解、类加载器)
- 黑马程序员:基础加强(可变参数、增强for、枚举、javabBean、BeanUtils、注解、泛型)
- 黑马程序员-枚举和注解
- 黑马程序员 枚举,注解
- 黑马程序员_王康 java反射,枚举,注解
- 黑马程序员--高新技术--枚举、反射、注解、类加载器、内省
- 黑马程序员_JAVA_枚举,注解,类加载器
- 黑马程序员Java培训和Android培训:枚举
- effective java(枚举和注解)
- 黑马程序员_Java_枚举
- 黑马程序员-----基础加强-注解,类加载器
- 黑马程序员——高新技术---eclipse使用技巧、静态导入、可变参数、增强for循环、 自动拆装箱、枚举
- 08黑马程序员_枚举,结构,数组
- 黑马程序员----Java 枚举
- 黑马程序员---內省、注解与类加载器