您的当前位置:首页正文

Java语言学习之Annotation(注释)

2024-12-02 来源:个人技术集锦

Annotation提供了一种为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符一样,可以用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明。这些信息被存储在Annotation的“name=value”对中。

一.基本Annotation
5个基本的Annotation如下:
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs(Java7)
@FunctionalInterface(Java8)

1.限定重写父类方法:@Override
@Override只能修饰方法,不能修饰其他程序元素。

2.标示已过时:@Deprecated
@Deprecated用于表示某个程序元素(类,方法等)已过时,当其他程序使用已过时的类,方法时,编译器将会给出警告。

3.抑制编译器警告:@SuppressWarnings
@SuppressWarnings指示被该Annotation修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告。

在通常情况下,如果程序中使用没哟泛型限制的集合将会引起编译器警告,为了避免这种编译器警告,可以使用@SuppressWarnings修饰,下面程序取消了没有使用泛型的编译器警告。

import java.util.ArrayList;
import java.util.List;

// 关闭整个类里的编译器警告
@SuppressWarnings(value="unchecked")
public class SuppressWarningsTest
{
    public static void main(String[] args)
    {
        List<String> myList = new ArrayList();     // ①
    }
}

4.Java7的堆污染警告与@SafeVarargs
5.Java8的函数式接口与@FunctionalInterface
Java8 规定,如果接口中只有一个抽象方法(可以包含多个默认方法或多个static方法),该接口就是函数式接口。

@FunctionalInterface
public interface FunInterface
{
	static void foo()
	{
		System.out.println("foo类方法");
	}
	default void bar()
	{
		System.out.println("bar默认方法");
	}
	void test(); // 只定义一个抽象方法
    //此时增加一个抽象方法会导致编译出错的。
	void abc();
}

二.JDK的元Annotation
1.使用@Retention
2.使用@Target
3.使用@Documented
4.使用@Inherited

显示全文