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
|
编译器要丢弃的注释
|