J2SE(14)之注解(Annotation)

1、注解概述

注解Annotation是从JDK5.0引入的;

注解的作用:1、注解不是程序本身,注解是对程序做解释说明作用; 2、注解是给编译器看的,(注解信息处理流程是最重要的)。

注解的定义格式:

public @interface MyAnnotation{
    //数据类型  参数名();   //注意参数名后面有括号,但不代表这是方法
}

注解的使用格式:在pakage、class、method和field上使用  @注解名(属性赋值),例如:@SuppressWannings(value="all")

2、内置注解

我们先认识一下JDK中的常见的内置注解:

2.1 @Override

@Override:该注解的意思是重写,这用在子类重写父类的方法上,表明该方法是父类存在的方法,如果使用了该注解的方法在父类中并不存在,那么就会报错。这个注解中没有参数,表明这是一个标识性注解。如下:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

2.2 @Deprecated

@Deprecated:该注解的意思是过时的,JDK中很多已经过时的方法会使用该注解,标识了这个注解的方法不建议我们使用。

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}

2.3 @SuppressWarnings

@SuppressWarnings:该注解的意思压制警告,我们在写有些代码的时候,编译器会给警告,代码下方会画黄色波浪线。如果想不显示的话,就可以使用该注解,让代码看起来更加清爽。

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}

它与前两个注解不同的是:它有一个value参数,所以在使用的时候必须设置参数的值,参数可选值如下:

参数值解释
deprecation使用了过时的类或方法的警告
unchecked执行了未检查的转换时的警告,如使用集合时未指定泛型
fallthrough当在使用switch语句时法生case穿透
path在类路径、源文件路径等中有不存在的路径的警告
serial当在可序列化的类上缺少serialVersionUID定时的警告
finally任何finally语句不能完成时的警告
all以上所有情况的警告

使用示例:

@SuppressWarnings("all")
public class AnnotationTest {
	@Override
	public String toString() {	
		Date date = new Date();
		return null;
	}
}

 

3、自定义注解

使用@interface自定义注解,自动继承了 java.lang.annotation.Annotation接口。

注意:

1、可以通过default来给参数设置默认值;

2、如果只有一个参数,一般参数名称设置为 value。

3.1 元注解

在自定义注解之前,我们先来学习一下元注解。从之前的@Override等注解的定义可以看出,每个注解的声明都使用其他的两个注解:@Target和@Retention。其实还有两个元注解:@Documented和@Inherited,用的比较少,这里不讨论。

3.1.1 @Target元注解

作用:用于描述注解的使用范围,即注解可以用在什么地方,比如方法、类等。定义如下:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

它的可取值是在枚举类  ElementType 中定义的,有:TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,ANNOTATION_TYPE、PACKAGE  共8个值。

使用示例:该注解可以在类(接口)和方法上使用。

@Target(value={ElementType.TYPE,ElementType.METHOD})
public @interface MyAnnotation {

}

3.1.2 @Retention

@Retention:表示需要在什么级别使用该注解,用于描述注解的声明周期。定义如下:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    RetentionPolicy value();
}

它的参数值是枚举类:RetentionPolicy 中定义的,有三个值:SOURCE、CLASS和RUNTIME。

取值RetentionPolicy作用范围
SOURCE在源文件中有效(一般编译器和加载器使用)
CLASS在calss文件中有效(一般编译器和加载器使用)
RUNTIME在运行时有效,运行时有效,我们利用反射才能获取到,自定义注解一般设置为运行时有效。

 

使用示例:

@Target(value={ElementType.TYPE,ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)//运行时有效,反射可以获取到
public @interface MyAnnotation {

}

3.2 自定义完整注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value={ElementType.TYPE,ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)//运行时有效,反射可以获取到
public @interface MyAnnotation {

	String className() default "";
	int age() default 0;
	String[] schools() default {"清华","北大"};
}

自定义了一个注解,里面有3个参数,并且都使用default给了默认值。

自定义注解的使用:

public class AnnotationTest {

	@MyAnnotation(className="精英班级",age=100,schools={"师大","博才"})
	public void test(){
		
	}
}

注意:如果没有给注解的参数指定默认值,那么在使用的时候就必须给每个参数都赋值,否则会报错。如果注解只有一个参数,并且参数名称是value,那么在指定参数的时候,可以直接写参数值:@MyAnnotation("aaaa");

@Target(value={ElementType.TYPE,ElementType.METHOD})
@Retention(value=RetentionPolicy.RUNTIME)//运行时有效,反射可以获取到
public @interface MyAnnotation2 {

	String value();
}

使用时:

@MyAnnotation2("aaa")
public void test2(){
		
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JCreator是一种Java集成开发环境(IDE),用于开发和编写J2SE(Java 2平台标准版)应用程序。它是基于Windows平台的,为Java开发者提供了一个友好的界面和一系列方便的功能。 首先,JCreator提供了一个简单易用的界面,使得开发者能够轻松地创建、编辑和管理Java项目。它具有类似于其他流行IDE的布局,包括编辑器窗口、项目导航器、控制台等。 其次,JCreator具有许多有用的功能。例如,它支持自动代码补全功能,可以在编写代码时快速显示和选择可能的选项。它还具有代码重构功能,可以帮助开发者重命名、提取方法、移动代码块等,提高代码的可维护性。 此外,JCreator还提供了调试功能,允许开发者在运行时跟踪和调试代码。它具有断点设置、变量监视和运行时错误报告等功能,帮助开发者找到和修复潜在的错误。 最后,JCreator与J2SE完全兼容。它支持最新的Java语法和标准库,开发者可以使用JCreator开发各种类型的应用程序,包括控制台程序、图形界面应用和Web应用。 综上所述,JCreator是一个功能强大、易于使用的IDE,适用于开发和编写J2SE应用程序。它提供了许多有用的功能和工具,可以提高开发效率,并帮助开发者在Java开发过程中更轻松地进行调试和测试。无论是初学者还是经验丰富的开发者,都可以从JCreator中受益,并快速开发出高质量的Java应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值