黑马程序员 枚举、注解
来源:互联网 发布:网络情歌大全在线播放 编辑:程序博客网 时间:2024/06/05 21:11
枚举和注解都是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)//注解定义的格式,和类差不多,但是返回值变成了@interfacepublic @interface ItcastAnnotation {//注解的属性,在加注解时必须添上,如果加了缺省方式 default,则可不写,为默认值String color() default "blue" ;String value() default "false";int[] arr() default {1,3,5};}这就是一个最简单的注解,当使用时,我们必须加上属性color,value,int[]。当然,这里写了缺省值,也可以不加。这些属性是为了写入不同的内容而存在的,比如SuppressWarmings("depracation")就是忽略过时的警告。
- 黑马程序员 枚举,注解
- 黑马程序员 枚举、注解
- 黑马程序员-枚举和注解
- 黑马程序员_自动装箱、枚举、可变参数、注解、JavaBean
- 黑马程序员_王康 java反射,枚举,注解
- 黑马程序员_内省&注解&枚举知识总结
- 『黑马程序员』---java--基础加强--枚举+注解
- 黑马程序员_JAVA_枚举,注解,类加载器
- 黑马程序员--高新技术--枚举、反射、注解、类加载器、内省
- 《黑马程序员》枚举复习
- <黑马程序员>枚举
- 黑马程序员__java_枚举
- 黑马程序员_枚举
- 黑马程序员 枚举
- 黑马程序员之枚举
- 黑马程序员-java-枚举
- 黑马程序员-枚举
- 黑马程序员_Java枚举
- C++多重继承
- python发送http请求
- C# ListView用法详解
- 使用Ambari快速部署Hadoop大数据环境
- woj1419 无聊的游戏
- 黑马程序员 枚举、注解
- 节奏大师乐谱破解 续
- 17 java 在 ArrayList 保存类的对象
- 【博客之星】帮我投一票吧,谢谢
- Class.forName函数的理解和使用(修改)
- 【cocos2d-x IOS游戏开发-城市跑酷13】游戏玩法:友情提示:how to play?
- 僵尸进程的产生与避免
- Logiscope
- C专家编程第五天