Java-注解(不包含元注解)
2024-08-30 00:53:20
@SuppressWarnings:抑制警告
package java.lang; import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
/**
* since 1.5
*/
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
示例1:抑制单类型的警告
@SuppressWarnings("unchecked")
public void addItems(String item){
@SuppressWarnings("rawtypes")
List items = new ArrayList();
items.add(item);
}
示例2:抑制多类型的警告
@SuppressWarnings(value={"unchecked", "rawtypes"})
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}
示例3:抑制所有类型的警告
@SuppressWarnings("all")
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}
@Override:表明被注解的目标是重写父类方法
package java.lang; import java.lang.annotation.*; /**
* @since 1.5
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
@Deprecated:标明被注解的目标已过时
package java.lang; import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*; /**
* @since 1.5
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
@SafeVarargs:抑制编译警告
package java.lang; import java.lang.annotation.*; /**
* @since 1.7
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
public @interface SafeVarargs {}
@SafeVarargs注解只能用在参数长度可变的方法或构造方法上,且方法必须声明为static或final,否则会出现编译错误。
示例:
package com.annotation; public class SafeVarargsTest { @SafeVarargs
public static void staticMethod(String... args) {
System.out.println("这是一个参数长度可变的static方法");
} @SafeVarargs
public final void finalMethod(String... args) {
System.out.println("这是一个参数长度可变的final方法");
} @SafeVarargs
public static final void staticFinalMethod(String... args) {
System.out.println("这是一个参数长度可变的static final方法");
} }
@Native:声明一个可以被本地代码引用的常量值字段
package java.lang.annotation; /**
* @since 1.8
*/
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface Native {
}
@FunctionalInterface:声明函数式接口
package java.lang; import java.lang.annotation.*; /**
* @since 1.8
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}
被@FunctionalInterface注解的接口,包含以下特性:
- 只能包含一个抽象方法
- 可以定义默认的方法实现
- 可以定义静态的方法实现
- 可以定义java.lang.Object中的public方法,不可以是public final方法
示例:
package com.annotation; @FunctionalInterface
public interface MyFunctionalInterface { /**
* 必须有抽象方法,有且仅有一个
*/
Object onlyAbstractMethod(Object params); default void defaultMethod() {
System.out.println("这是函数式接口中一个默认方法");
} static void staticMethod() {
System.out.println("这是函数式接口中一个静态方法");
}
// 函数式接口里是可以包含Object里的public方法,这些方法对于函数式接口来说,不被当成是抽象方法(虽然它们是抽象方法);因为任何一个函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现;
// final方法无法被复写,所以此处无法添加Object中的public final方法
@Override
String toString(); @Override
boolean equals(Object obj); @Override
int hashCode(); }
最新文章
- spring 定时任务配置
- Linux----LVM扩容磁盘空间
- [问题记录.VisualStudio]TFS项目映射问题解决
- check the element in the array occurs more than half of the array length
- linux tricks 之 bitmap分析.
- Microsoft Dynamics AX 2012 X++ Editor Extensions
- 我的学习笔记之node----node.js+socket.io实时聊天(2)
- HDU2196-Computer
- Ubuntu 14.04 下手动安装Firefox的Flash插件
- Delphi启动/停止Windows服务,启动类型修改为";自动";
- Fast portable non-blocking network programming with Libevent
- selenium + python 部署自动化测试环境
- springmvc整合swagger
- js求数组的最大值--奇技淫巧和笨方法
- D - 文理分科 HYSBZ - 3894(最小割)
- PyQt+Html+Js
- 【代码审计】Cscms_v4.1 任意文件删除漏洞实例
- 计算概论(A)/基础编程练习2(8题)/4:骑车与走路
- js事件委托及其原理
- 10行代码搞定移动web端自定义tap事件
热门文章
- nodejs 实战
- HDU 3714/UVA1476 Error Curves
- SDIO卡 了解
- YTU 2209: 建立链表(线性表)
- java.lang.IllegalArgumentException: No converter found for return value of type: class com.st.bean.User
- hdu 1400 Mondriaan's Dream 解题报告
- JAVASCRIPT技术 表达式验证
- centos安装cowboy过程
- C++对象的复制——具有指针成员的类的对象的复制
- 洛谷P1999三国游戏