`
hl756799782
  • 浏览: 74684 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

张龙 Annotation学习笔记1

阅读更多

首先明确一个概念:
annotation=注解      comment=注释  不要混淆了

a) Override注解表示子类要重写(override)父类的对应方法。
举例:OverrideTest.java

 

package com.shengsiyuan.annotation;

public class OverrideTest
{
	@Override
        //该注解表示该类重写了父类的方法
	public String toString()
	{
		return "This is OverrideTest";
	}
	
	public static void main(String[] args)
	{
		OverrideTest test = new OverrideTest();
		
		System.out.println(test);
	}
} 

b) Deprecated注解表示方法是不建议被使用的。
举例:DeprecatedTest.java 

package com.shengsiyuan.annotation;

public class DeprecatedTest
{
	@Deprecated
        //该注解表示这个方法是废弃的,不建议被使用的
	public void doSomething()
	{
		System.out.println("do something!");
	}
	
	public static void main(String[] args)
	{
		DeprecatedTest test = new DeprecatedTest();
		
		test.doSomething();
		
		
		
		
		
		
//		Date date = new Date();
//		
//		System.out.println(date.toLocaleString());
	}
}

c) SuppressWarnings注解表示抑制警告。
举例:SuppressWarningsTest.java

package com.shengsiyuan.annotation;

import java.util.Date;
import java.util.Map;
import java.util.TreeMap;

public class SuppressWarningsTest
{
	@SuppressWarnings({"unchecked", "deprecation"})
   //该注解表示一些警告会被压制住
   //unchecked表示不对集合没有使用泛型进行警告
   //deprecation表示不对已经废弃的方法的使用进行警告
	public static void main(String[] args)
	{
		Map map = new TreeMap();
		
		map.put("hello", new Date());
		
		System.out.println(map.get("hello"));
		
		Date date = new Date();
		
		System.out.println(date.toLocaleString());
	}
}

关于自定义注解

自定义注解:当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种赋值方式,即明确指定给谁赋值。
举例如下:
(1)先定义一个注解 

package com.shengsiyuan.annotation;

public @interface AnnotationTest
{
        //注解里定义属性要在属性后面加一个括号
	String[] value1() default "hello";//有一个默认值hello
	EnumTest value2(); //注解里面的值也可定义为枚举类型
}

enum EnumTest
{
	Hello, World, Welcome;
}

 注意:当一个接口继承Annotation接口时,该接口依然只是一个接口,还不是注解类型,
         要定义注解类型只有一种方式:通过@interface关键字,除此之外别无他法。
         另外,Annotation本身也只是一个接口,并不是注解类型(可以查看API文档有        Annotation这个接口)

(2)引用上面的注解 

package com.shengsiyuan.annotation;

@AnnotationTest(value2 = EnumTest.Welcome)
public class AnnotationUsage
{
	@AnnotationTest(value1 = {"world", "ABCD"}, value2 = EnumTest.World)
	public void method()
	{
	   System.out.println("usage of annotation");
	}
	
	public static void main(String[] args)
	{
	   AnnotationUsage usage = new AnnotationUsage();
		
                   usage.method();
	}
}

 

最后有一点需要注意的是:
当我们使用@interface关键字定义一个注解时,该注解隐含地继承了java.lang.annotation.Annotation接口;如果我们定义了一个接口,并且让该接口继承自Annotation,那么我们所定义的接口依然还是接口而不是注解;Annotation本身是接口而不是注解。可以与Enum类比。


 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics