首先明确一个概念:
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类比。
本文详细介绍了Java中的三种注解:Override、Deprecated 和 SuppressWarnings 的使用方法,并提供了代码示例。此外,还讲解了如何自定义注解及其应用场景。
116

被折叠的 条评论
为什么被折叠?



