Java-day13(枚举与注解)

这篇具有很好参考价值的文章主要介绍了Java-day13(枚举与注解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

枚举与注解

枚举

1.自定义枚举

如果枚举只有单个成员,则可以作为单例模式的实现方式

public class test{
public static void main(String[] args) {              
    Season spring = Season.spring;
    System.out.println(spring);
    spring.show();
    System.out.println(spring.getSeasonName());
}
}
//枚举类
class Season{
    //1.提供类的属性的私有,不可修改
    private final String seasonName;
    private final String seasonDesc;
    //声明为final的属性,在构造器中初始化
    private Season(String seasonName, String seasonDesc){
        this.seasonDesc = seasonDesc;
        this.seasonName = seasonName;
    }
    //通过公共的方法来调用属性
    public String getSeasonName(){
        return  seasonName;
    }
    public String getSeasonDesc(){
        return  seasonDesc;
    }
    //创建枚举类对象:将类的对象声明为public static final
    public static final Season spring = new Season("spring", "万物复苏");
    public static final Season summer = new Season("summer", "烈日炎炎");
    public static final Season autumn = new Season("autumn", "秋高气爽");
    public static final Season winter = new Season("winter", "寒冬来临");
    public String toString(){
        return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]";
    }
    public void show(){
        System.out.println("又是这个季节");
    }
}

Java-day13(枚举与注解),Java,java,枚举,注解

2.使用enum关键字定义枚举类

enum关键字是JDK1.5新增的
枚举类的主要方法

public class test1{
public static void main(String[] args) {              
    Season1 spring = Season1.spring;
    System.out.println(spring); 
    spring.show();
    System.out.println(spring.getSeasonName()); 
    System.out.println(); 

    //1.枚举的values()方法
    Season1[] seasons = Season1.values();
    for(int i = 0;i < seasons.length;i++){
        System.out.println(seasons[i]); 
    }    
    System.out.println(); 
    //2.枚举的valueof(String name)方法:要求传入的形参name必须是枚举对象的名字,否则报异常IllegalArgumentException
    String str = "spring";
    Season1 sea = Season1.valueOf(str);
    System.out.println(sea); 
}
}
//枚举类
enum Season1{
    spring ("spring", "万物复苏"),
    summer ("summer", "烈日炎炎"),
    autumn ("autumn", "秋高气爽"),
    winter ("winter", "寒冬来临");
    private final String seasonName;    
    private final String seasonDesc;
    
    private Season1(String seasonName, String seasonDesc){
        this.seasonDesc = seasonDesc;
        this.seasonName = seasonName;
    }
    
    public String getSeasonName(){
        return  seasonName;
    }
    public String getSeasonDesc(){
        return  seasonDesc;
    }
    public String toString(){ 
        return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]"; 
    }
    public void show(){
        System.out.println("又是这个季节");
    }
}

Java-day13(枚举与注解),Java,java,枚举,注解

3.实现接口的枚举类

  • 可以让枚举类的对象调用同一套被重写的抽象方法,执行的效果相同

例:

public class test1{
public static void main(String[] args) {         
    Season1 spring = Season1.spring;
    System.out.println(spring);
    spring.show();
    System.out.println(spring.getSeasonName());
    System.out.println();
}
}
enum Season1{
    spring ("spring", "万物复苏"),
    summer ("summer", "烈日炎炎"),
    autumn ("autumn", "秋高气爽"),
    winter ("winter", "寒冬来临");
    private final String seasonName;
    private final String seasonDesc;
    
    private Season1(String seasonName, String seasonDesc){
        this.seasonDesc = seasonDesc;
        this.seasonName = seasonName;
    }
    
    public String getSeasonName(){
        return  seasonName;
    }
    public String getSeasonDesc(){
        return  seasonDesc;
    }
    public String toString(){
        return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]";
    }
    public void show(){
        System.out.println("又是这个季节");
    }
}
  • 可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同(相当于让每个对象重写自己的抽象方法)

例:

public class test2{ 
public static void main(String[] args) {   
    Season1 spring = Season1.spring; 
    System.out.println(spring); 
    spring.show(); 
    System.out.println(spring.getSeasonName()); 
    System.out.println(); 
}

interface info{ 
    void show(); 
}
enum Season1 implements info{ 
    spring ("spring", "万物复苏"){
        public void show(){ 
            System.out.println("春天到了!");   
        }
    },
    summer ("summer", "烈日炎炎"){
        public void show(){ 
            System.out.println("夏天到了!"); 
        }
    },
    autumn ("autumn", "秋高气爽"){
        public void show(){ 
            System.out.println("\u79CB天到了!"); 
        }
    },
    winter ("winter", "寒冬来临"){
        public void show(){ 
            System.out.println("冬天到了!"); 
        }
    };
    private final String seasonName; 
    private final String seasonDesc; 
    
    private Season1(String seasonName, String seasonDesc){ 
        this.seasonDesc = seasonDesc; 
        this.seasonName = seasonName; 
    }
    
    public String getSeasonName(){ 
        return  seasonName; 
    }
    public String getSeasonDesc(){ 
        return  seasonDesc; 
    }
    public String toString(){ 
        return "Season1 [ Name: " + seasonName + ", Desc: " + seasonDesc + "]"; 
    }
}
}

Java-day13(枚举与注解),Java,java,枚举,注解

注释(Annotation)

  • 从JDK5.0开始增加对元数据的支持,即注解(代码中的特殊标记)

  • 可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,保存在注解的"name=value"对中

  • 能被用来为程序元素(类,方法等)设置元数据

4.内置的基本注释类型(3个)

@Override

限定重写父类方法,只能用于方法
例:

public class test{
    public static void main(String[] args) {           
        Person p = new Student();
        p.info();
    }
}
class Student extends Person{
    @Override
     public void info(){
        System.out.println("学生表演吃瓜!");
    }
}
class Person{//个人信息
	private String name;  //姓名
	private int age;      //年龄
	private String sex;   //性别

	public Person(String name,int age,String sex){
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Person(){
		super();
	}
    public void info(){
        System.out.println("人\u8868\u6F14吃瓜!");
    }
}
@Deprecated

用于表示某个程序元素(类,方法等)已过时
例:

public class test6 {
    public static void main(String[] args) {      
        Person p = new Student();
        p.info();
    }
}
class Student extends Person{
     public void info(){
        System.out.println("学生表演吃瓜!");
    }
}
@Deprecated
class Person{//个人信息
	private String name;  //姓名
	private int age;      //年龄
	private String sex;   //性别

	public Person(String name,int age,String sex){
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Person(){
		super();
	}
    public void info(){
        System.out.println("人\u8868\u6F14吃瓜!");
    }
}
@SuppressWarnings

抑制编译器警告

import java.util.ArrayList;
import java.util.List;
public class test {
   public static void main(String[] args) {      
	@SuppressWarnings({"rawtypes","unused"})
	//抑制没有使用泛型,没有使用的警告
	List list = new ArrayList();
	}
}

5.自定义注解

例:

public @interface test7 {
   String value() default "hello";
}
//使用
public class test6 {
	@test7(value = "qwerq")
	    public static void main(String[] args) { 
    }
}

6.元注解(4个)

修饰其他注解的定义,该注解具体有

@Retention

只能修饰一个注解的定义,指定该注解可以保留多长时间,@Retention中有一个RetentionPolicy类型的成员变量,使用时,必须给这个成员变量指定值(值:

  • SOURCE(编译器直接放弃这种注解)
  • CLASS(编译器将注释记录到class文件中,运行时,JVM不保留注解,这是默认值)
  • RUNTIME(编译器将注释记录到class文件中,运行时,JVM保留注解,程序可以通过反射获取该注解))
import java.lang.annotation.Retention;                                                        
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.CLASS)
public @interface test7 {
   String value() default "hello";
}
@Target

指定被修饰的注解能用于哪些程序元素,@Target中有一个value的成员变量

@Documented

将被javadoc工具提取成文件,@Retention值必须是RUNTIME

@Inherited

被它修饰的注解将具有继承性,某个类使用了此注解,那它的子类将自动具有该注释

感谢大家的支持,关注,评论,点赞!
参考资料:
尚硅谷宋红康20天搞定Java基础中部文章来源地址https://www.toymoban.com/news/detail-681790.html

到了这里,关于Java-day13(枚举与注解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 0基础学java-day26(满汉楼实战)

    2.1 用户登录 2.2 显示餐桌状态  2.3 预订 2.4 显示菜品  2.5 点餐 2.6 查看账单  2.7 结账 1.1 构建如下的项目结构 1.2 导入相关的工具类和jar包 相关的工具类和jar包会放在评论区的百度网盘的链接中 1.3 整体项目结构  1.4 相关sql语句,也就是要建立的表 一个类就对应一张表,如果

    2024年01月16日
    浏览(42)
  • 0基础学java-day25(JDBC 和数据库连接池)

    1.1 方式 1 1.2 方式 2  1.3 方式 3  1.4 方式 4  1.5 方式 5    1.6 课堂练习  2.1 基本介绍  2.2 应用实例 3.1 基本介绍  3.2 演示的sql语句  3.3 应用实例 ​ 4.1 基本介绍 4.2 预处理好处  4.3 应用案例  模拟经典的转账业务 【package utils】   【package domain】 【dao】 【test】

    2024年01月18日
    浏览(42)
  • 【JAVA-Day03】JDK安装与IntelliJ IDEA安装、配置环境变量

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月02日
    浏览(81)
  • Java学习day13

    流是一个非常强大的概念,它提供了一种高效且便捷的方式来处理集合数据。你可以将流看作是一系列数据项的管道,你可以对这些数据进行各种操作,如过滤、映射、排序和归约。 流的创建 在Java中,你可以通过集合、数组或输入/输出操作来创建流。下面是一些创建流的示

    2024年02月19日
    浏览(24)
  • Day20-【Java SE高级】单元测试 反射 注解 动态代理

    就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。 1. 咱们之前是如何进行单元测试的?有啥问题? 只能在main方法编写测试代码,去调用其他方法进行测试。 无法实现自动化测试,一个方法测试失败,可能影响其他方法的测试。 无法得到测试的报告,需要程

    2024年04月17日
    浏览(51)
  • 进阶JAVA篇-深入了解枚举与抽象枚举

    目录       介绍一下枚举:           1.1枚举的概念           1.2具体如何来使用呢?           1.3对枚举小结           1.4抽象枚举概念           1.5对抽象枚举小结         在JAVA中,枚举是一种特殊的类,用于定义一组常量。Java中的枚举类型是通过使用\\\"

    2024年02月07日
    浏览(50)
  • 【Java】Java核心类 之 枚举类

    在Java中,我们可以通过static final来定义常量。例如,我们希望定义周一到周日这7个常量,可以用7个不同的int表示: 使用常量的时候,可以这么引用: 也可以把常量定义为字符串类型,例如,定义3种颜色的常量: 使用常量的时候,可以这么引用: 无论是int常量还是String常

    2024年02月16日
    浏览(26)
  • 「Java基础入门」Java中switch怎么使用枚举

    在Java开发中,switch语句是一种常用的流控制语句,用于根据不同的条件执行不同的代码块。而当使用枚举类型作为条件时,我们常常会遇到“Constant expression required”的报错问题,这给程序开发造成了不小的困扰。 switch 语句中的变量类型可以是: byte、short、int 或者 char。从

    2024年02月16日
    浏览(33)
  • Java基础篇——反射&枚举

    B友:https://www.bilibili.com/video/BV1QG4y1J76q/ VIP服务课程 :https://edu.51cto.com/course/32767.html 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的【加载】,【连接】,【初始化】 这三个步骤来对类进行初始化。 如果不出现意外情况,JVM将会连续完成这三个步

    2024年02月12日
    浏览(39)
  • Java 枚举详细讲解

    目录 什么是枚举? 如何使用Java枚举? 如何使用Java枚举中的常量值? 如何在Java枚举中添加方法? 枚举是一种特殊的数据类型,用于定义具有固定个数的常量集。它可以帮助我们更好地管理常量,使代码更易于阅读和维护。 Java枚举是一种高效、可读性强的常量管理方式,它

    2023年04月20日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包