跟着刚哥梳理java知识点——枚举和注解(十四)
enum Season{
SPRING("spring","春暖花开"),
SUMMER("summer","夏日炎炎"),
AUTUMN("autumn","秋高气爽"),
WINTER("winter","白雪皑皑");
}
其实上面等等同于:
class Season{
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","白雪皑皑");
private final String seasonName;
privete final String seasonDesc;
private Season(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
}
上面其实我自己写了一个枚举类,就是把相同的去掉,发现了吗?就是封装的枚举类然后把每行结束的分号改成了逗号
主要方法:
① values():获取所有枚举类对象,返回的是对象的数组
Season[] season = Season.values();
② valueOf(String name):获取对象名字的枚举类对象,返回枚举
Season sea = Season.valueOf("SPRING");
注意:参数SPRING是实例化对象名称,写错后,sea可不是NULL,会报错的。
如何让枚举实现接口:
iterface Info{
void show();
}
enum Season 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("春天在哪里?");
}
},
WINTER("winter","白雪皑皑"){
public void show(){
system.out.printLn("春天在哪里?");
}
};
}
总结:
发现是不是可以在每个对象内部重写接口的方法,这样就让不同的枚举类的对象
实现接口效果不一样。
Java注解
①:从java5.0开始,增加了对元数据的支持,也就是注解(Annotation)。
就是代码的特殊标记,这些标记可以在编译、类加载、运行时被读取并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
② Annotation 可用于修饰包、类、构造器、方法、成员变量、参数、局部变量
③ JDK提供的的三个常用的基本注解类型
√ @Override:重写父类方法,只能用于方法
这个写不写,其实都能重写,好处就是代码一眼就能看见是重写
√ @Deprecated:用于表示某个程序元素过时(类、方法)
过时,不代表不能用,只是不推荐了。
JDK里每次推出新版本都可能去过时一些,其实就是告诉你有更好的
替换它了,尽量不用它了,没准下个版本我们就去掉了。
加上以后类或者方法上加一条横线
√ @SupperessWarnings:抑制编译器警告
给有强迫症的人用的,呵呵。总看到IDE环境左侧一些小黄叹号
加上以后就不叹号了,rawtypes 表示没用泛型 unused表示没用呢
④ 如何自定义注解
格式:
public @interface MyAnnotation{
}
基本没什么人用,知道格式就行了
⑤ 元注解
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
绿色的就是元注解,意思就是修饰注解的注解
@Retention:表示下面注解的生命周期
RetentionPolicy.SOURCE 是个枚举
代表在编译的时候直接丢弃,也是默认值
@Target:用于表示哪些类型能被修饰
比如:我只想让注解修饰类和方法等
@Documented:指定修饰的注解可以被javadoc工具提取成文档
@Inherited:被它修饰的注解具有继承性,使用极少。知道就行了
跟着刚哥梳理java知识点——枚举和注解(十四)的更多相关文章
- 跟着刚哥梳理java知识点——多线程(十六)
创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...
- 跟着刚哥梳理java知识点——面向对象(八)
面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...
- 跟着刚哥梳理java知识点——深入理解String类(九)
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...
- 跟着刚哥梳理java知识点——变量之间的类型转换(四)
变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...
- 跟着刚哥梳理java知识点——注释(二)
1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...
- 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)
1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...
- 跟着刚哥梳理java知识点——IO(十五)
凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...
- 跟着刚哥梳理java知识点——泛型(十三)
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...
- 跟着刚哥梳理java知识点——集合(十二)
Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...
随机推荐
- linux 下apache2 安装
Apache安装要求 安装APR.APR-Util.PCRE,gcc-c++等包 Apache HTTP Server http://httpd.apache.org/download.cgi#ap ...
- vue2.0全局组件之pdf
目的:像elementUI那样注册全局组件 预览pdf文件 技术支持:使用火狐的pdf.js http://mozilla.github.io/pdf.js/ 准备:新建一个CPdf.vue文件,把火 ...
- 数据库中的T-sql语句 条件修改 高级查询
1.创建数据库:create database --数据库名,不能中文,不能数字开头,不能符号开头 2.删除数据库:drop database-- 数据库名 use student--使用数据库 3. ...
- 在node中使用 ES6
ES6+ 太棒了,但是很多高级功能node是不支持的,就需要使用babel转换成ES5, 1.安装babel依赖 npm install babel-core --save-dev 2.安装babel ...
- 1677: [Usaco2005 Jan]Sumsets 求和
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 626 Solved: 348[Submi ...
- 谷歌(Google Chrome)插件安装
chrome应用商店打不开,安装插件的另一种方式 接下来以JsonView为例讲解安装步骤: 1.打开GitHub: https://github.com 2.搜索jsonview 3.选择需要的插件 ...
- Robots协议
Robots协议 什么是robots? Robots文件:网站和搜索引擎之间的一个协议. 用来防止搜索引擎抓取那些我们不想被搜索引擎看到的隐私内容. Robots文件告诉蜘蛛什么是可以被查看的. ...
- c++ string 对象操作
字符串转换大小写如下: #include "stdafx.h" #include <iostream> #include <string> using na ...
- jQuery中$.extend(true,object1, object2);深拷贝对象
语法:jQuery.extend( [deep ], target, object1 [, objectN ] ) 深浅拷贝对应的参数就是[deep],是可选的,为true或false.默认情况是fa ...
- 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
Date()对象: Date对象用于处理日期和时间. 1.1 Math对象 ◆Math.ceil() 天花板函数 向上取整 只取整数,不足则进1 ◆Math.floor() 地板函数 ...