黑马程序员 枚举、注解

---------------------- 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培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值