首页 > 编程语言 >Java基础14

Java基础14

时间:2024-09-10 20:15:33浏览次数:8  
标签:Java 14 基础 name Person 用于 注解 public 描述

Annotation注解

理解:是从jdk5.0开始引入,,以“@注解名”在代码中存在

> Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。

   还可以添加一些参数值,这些信息被保存在Annotation的"name = value"对中。

> 注解可以在类编译、运行时进行加载,体现不同的功能。

应用场景

示例1:生成文档相关的注解

示例2:在编译时进行格式检查(JDK内置的三个基本注解)

示例3:跟踪代码依赖性,实现替代配置文件功能

Java基础涉及到的三个常用注释

'@Override':限定重写父类方法,该注解只能用于方法

'@Deprecated':用于表示所修饰的元素(类、方法)已过时。通常是因为所修饰的结构危险或存在更好的选择。

'@SuppressWarnings':抑制编译器警告

public class AnnotationTest {
    public static void main(String[] args) {
        Person p1 = new Student();
        p1.eat();

        Person p2 = new Person();
        Person p3 = new Person("Tom");  //划线表示这个构造器不推荐使用,认为是过时的

        @SuppressWarnings("unused") int num = 10; // 抑制编译器警告
    }
}

class Person{
    String name;
    int age;

    public Person(){
    }

    @Deprecated  // 表示所修饰的元素(类、方法)已过时,通常是因为所修饰的结构危险或存在更好的选择。
    public Person(String name){
        this.name = name;
    }

    public void eat(){
        System.out.println("人吃饭");
    }
}

class Student extends Person{
    @Override // 限定重写父类方法,该注解只能用于方法
    public void eat(){
        System.out.println("学生吃饭");
    }

    public void walk(){
        System.out.println("学生走路");
    }
}

自定义注解

以@SuppressWarnings为参照,进行定义即可。

前面必须使用@interface

public @interface MyAnnotation {
    String value()default "hello"; // 如果没写default "hello"  则用这个注解括号内必须有一个value值,否则报错!
}
@MyAnnotation(value = "class")
class Person{
    String name;
    int age;

    @MyAnnotation()
    public Person(){
    }
}

元注解

对现有的注解进行解释说明的注解

四个元注解

① @Target:用于描述枚举类型ElementType的10个常量对象来指定  表示在哪些结构内可以使用

作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造器
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部变量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

② @Retention:用于描述注解的生命周期

(即:被描述的注解在它所修饰的类中可以被保留到何时).

Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中.    

注意:生命周期长度 SOURCE < CLASS < RUNTIME 

public enum RetentionPolicy {
 
    SOURCE,    // 源文件保留
    CLASS,       // 编译期保留,默认值
    RUNTIME   // 运行期保留,可通过反射去获取注解信息
}

③ @Documented:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。

④ @Inherited:允许子类继承父类中的注解

JUnit单元测试

测试分类:

黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。

 白盒测试:需要写代码。关注程序具体的执行流程。

 

标签:Java,14,基础,name,Person,用于,注解,public,描述
From: https://www.cnblogs.com/gjwqz/p/18407075

相关文章

  • [Java并发]Concurrenthashmap的size()
    1.一致性定义关于一致性的定义,大概如下:一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、顺序一致性与弱一致性。1.1强一致性(StrictConsistency)强一致性也被可以被称做:原子一致性(AtomicConsistency)线性一致性(LinearizableConsistency)要......
  • java----双列集合(Map)
    来看一下双列集合。我们知道,单列集合就是一次只能添加一个元素:单列集合: 双列集合一次可以存储两个值:一、双列集合特点:    1.双列集合一次需要存一对数据,分别为键和值    2.键不能重复,值可以重复    3.键和值是一一对应的,每个键只能找到......
  • JAVA —— IO流续
    复习一下上次的字节流 一、字符流1.Reader——FileReader 文件字符输入流——读字符数据进来2.Writer——FileWriter文件字符输出流——写字符数据进去  1.Reader——FileReader(文件字符输入流) publicstaticvoidmain(String[]args){ try( ......
  • Java中的修饰符
    1.访问权限修饰符访问权限分四种级别:公开级别:用public修饰,对外公开。受保护级别:用protected修饰,向子类及同一个包中的类公开。默认级别:没有访问权限修饰符,向同一个包中的类公开。私有级别:用private修饰,只有类本身可以访问,不对外公开。下图总结访问级别访问权限修饰符同......
  • P1486
    偷懒的新方法#include<cstdio>#include<iostream>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>usingnamespace__gnu_pbds;usingnamespacestd;structnode{intv,id;node(inta,intb){......
  • 0基础开始Pine量化 多重时间框架EMA+Supertrend策略(附代码)
    0基础开始Pine量化多重时间框架EMA+Supertrend策略(附代码)基于金叉动量捕捉策略:多重时间框架指数移动平均线交叉系统和三重超级趋势交叉策略在发明者量化网站上回测试验啥是EMA(指数移动平均线)EMA(ExponentialMovingAverage)是一种用于金融市场技术分析的趋势跟踪指标。与简......
  • Kubernetes 基础:Ingress的高可用部署
    前言在上一章节中,我们知道有以下几种方式可以实现对外暴露服务:NodePort(Pod设置HostNetWork同理)LoadBalancerExternalIP1.1背景但在实际环境中,我们很少直接使用这些方式来对外暴露服务,因为它们都有一个比较严重的问题,那就是需要占用节点端口。也就是说,占用节点端口......
  • Java 反射机制
    目录一.概述二.反射的特点三.反射主要应用四.反射注意事项五.代码示例详解1.解析图:2.获取字节码对象3.通过反射获取构造函数并创建对象4.通过反射获取对象字段信息5.通过反射获取方法并执行6.通过反射获取注解信息六.总结1.获取Class字节码对象方式......
  • Java 设计模式-状态模式
    目录一.概述二.主要角色三.代码示例四.优缺点优点:缺点:五.常见应用场景一.概述        状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定的状态相关的行为放到一个类......
  • Java 设计模式-代理模式
    目录概述一.什么是代理模式1.举例说明二.代理模式作用1.保护代理2.增强功能3.代理交互4.远程代理:三.代理模式3个角色四.静态代理1.代码示例:五.JDK动态代理1.代码示例:六.CGLIB动态代理1.代码示例 七.JDK动态代理和CGLIB动态代理区别八.两种在......