zoukankan      html  css  js  c++  java
  • Java-注解(不包含元注解)

    @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(); }
  • 相关阅读:
    set desktop for aliyun ubuntu
    【深度学习】paddlepaddle——基于卷积神经网络的手写字识别案例
    【深度学习】paddlepaddle基础语法
    【深度学习】TensorFlow——理解张量
    【深度学习】TensorFlow——图详解
    【深度学习】TensorFlow——变量op
    【深度学习】TensorFlow——实现线性回归案例
    【深度学习】TensorFlow——理解会话
    【深度学习】TensorFlow——初识tensorflow
    【机器学习】量化策略
  • 原文地址:https://www.cnblogs.com/517cn/p/10872419.html
Copyright © 2011-2022 走看看