public class OverrideDemo {
@Override
public String tostring() {
return super.toString();
}
}
|
OverrideTest.java:4:
方法未覆盖其父类的方法
@Override
^1
错误
|
public class DeprecatedDemo {
public static void main(String[] args) {
DeprecatedClass.DeprecatedMethod();
}
}
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
|
注意:
DeprecatedDemo.java
使用或覆盖了已过时的
API
。
注意:要了解详细信息,请使用
-Xlint:deprecation
重新编译。
|
DeprecatedDemo.java:6:
警告:
[deprecation] SomeClass
中的
DeprecatedMethod()
已过时
SomeClass.DeprecatedMethod();
^1
警告
|
class DeprecatedClass {
/**
* @deprecated
此方法已过时,不建议使用
*/
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
|
参数
|
说明
|
deprecation
|
使用了过时的类或方法时的警告
|
unchecked
|
执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型
|
fallthrough
|
当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
|
path
|
在类路径、源文件路径等中有不存在的路径时的警告
|
serial
|
当在可序列化的类上缺少 serialVersionUID 定义时的警告
|
finally
|
任何 finally 子句不能正常完成时的警告
|
all
|
关于以上所有情况的警告
|
import java.util.List;
import java.util.ArrayList;
public class SuppressWarningsDemo {
public static List cache = new ArrayList();
//@SuppressWarnings(value = "unchecked")
public void add(String data) {
cache.add(data);
}
}
|
注意:
SuppressWarningsDemo.java
使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用
-Xlint:unchecked
重新编译。
|
import java.lang.annotation.*;
/** *
使用
annotation
来描述那些被标注的成员是不稳定的,需要更改
*/ public @interface Unstable {
}
|
/** *
使用
Author
这个
annotation
定义在程序中指出代码的作者
*/ public @interface Author { /**
返回作者名
*/ String value(); }
|
/** * Reviews annotation
类型只有一个成员,
*
但是这个成员的类型是复杂的:由
Review annotation
组成的数组
*/ @Retention(RetentionPolicy.RUNTIME) public @interface Reviews { Review[] value(); }
/** * Review annotation
类型有
3
个成员:
*
枚举类型成员
grade
、
*
表示
Review
名称的字符串类型成员
Reviewer
、
*
具有默认值的字符串类型成员
Comment
。
*/ public @interface Review { //
内嵌的枚举类型
public static enum Grade { EXCELLENT, SATISFACTORY, UNSATISFACTORY }; //
下面的方法定义了
annotation
的成员
Grade grade(); String reviewer(); String comment() default ""; }
|
public @interface UncheckedExceptions { Class<? extends RuntimeException>[] value(); }
|
@Target(ElementType.METHOD) public @interface MyAnnotation { ... } |
ElementType
值
|
说明
|
ElementType.ANNOTATION_TYPE
|
应用于注释类型声明
|
ElementType.CONSTRUCTOR
|
构造方法声明
|
ElementType.FIELD
|
应用于字段声明(包括枚举常量)
|
ElementType.LOCAL_VARIABLE
|
应用于局部变量声明
|
ElementType.METHOD
|
应用于方法声明
|
ElementType.PACKAGE
|
应用于包声明
|
ElementType.PARAMETER
|
应用于参数声明
|
ElementType.TYPE
|
应用于类、接口(包括注释类型)或枚举声明
|
@ Retention(RetentionPolicy.CLASS) public @interface MyAnnotation { ... } |
RetentionPolicy
值
|
说明
|
RetentionPolicy.CLASS
|
编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释
|
RetentionPolicy.RUNTIME
|
编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取
|
RetentionPolicy.SOURCE
|
编译器要丢弃的注释
|