枚举&注解
来源:互联网 发布:夏季联赛数据 编辑:程序博客网 时间:2024/06/05 08:14
一、枚举:枚举本质上也是一个类
①枚举的定义:
public enum Action {
TURN_LEFT,
TURN_RIGHT,
SHOOT
}
---------------
public enum DetailAction2 {
TURN_LEFT("向左转"), TURN_RIGHT("向右转"), SHOOT("射击");
private String description;
// 不公开的构造函数
private DetailAction2(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
-------------------
public class EnumDemo2 {
private enum InnerAction {TURN_LEFT, TURN_RIGHT, SHOOT};
public static void main(String[] args) {
doAction(InnerAction.TURN_RIGHT);
}
public static void doAction(InnerAction action) {
switch(action) {
case TURN_LEFT:
System.out.println("向左转");
break;
case TURN_RIGHT:
System.out.println("向右转");
break;
case SHOOT:
System.out.println("射击");
break;
}
}
}
--------------------------
②枚举类的实现:
public enum MoreAction2 {
TURN_LEFT {
// 操作抽象方法
public String getDescription() {
return "向左转";
}
}, // 记得这里的枚举值分隔使用
TURN_RIGHT {
// 操作抽象方法
public String getDescription() {
return "向右转";
}
},// 记得这里的枚举值分隔使用
SHOOT {
// 操作抽象方法
public String getDescription() {
return "射击";
}
}; // 记得这里的枚举值结束使用
// 声明个抽象方法
public abstract String getDescription();
}
二、注解
①:常用的注解:
--- @Oberride :重写
--- @Deprecated :该方法不建议使用,会报警告
--- @SuppressWarnings(value={"XXX"}) :忽略XXX的警告
package onlyfun.caterpillar;
import java.util.*;
public class SomeClass2 {
@SuppressWarnings(value={"unchecked"})
public void doSomething() {
Map map = new HashMap();
map.put("some", "thing");
}
}
②:自定义注解以及使用:
package onlyfun.caterpillar;
public @interface UnitTest {
String value();
}
使用:
public class MathTool{
@UnitTest("gbd")
public void show(){}
}
------------------------
package onlyfun.caterpillar;
public @interface Process {
public enum Current {NONE, REQUIRE, ANALYSIS, DESIGN, SYSTEM};
Current current() default Current.NONE;
String tester();
boolean ok();
}
使用:
public class Apply{
@Process(
current=Process.current.ANALYSIS,
tester="Just",
ok=true
)
}
-----------
自定义的注解上还可以加注解:metadata
--- @Retention (RetentionPolicy.XXX)
xxx有三个:SOURCE :编译器处理完Annotation就可以啦
CLASS :编译器将Annotation存储于.class文件中
RUNTIME :编译器将Annotation存储于.class文件中,可由vm读入
---- @Target(ElementType.xxxx)
xxx的选择:
TYPE :适用于class、interface、enum
FIELD :适用于field
METHOD :适用于方法
PARAMETER :适用于method上的参数
CONSTRUCTOR :适用于构造函数
LOCAL_VARIABLE :适用于区域变量
ANNOTATION_TYPE :适用于annotation类型
PACKAGE :适用于package
-------@Documented :将annotation中的信息加入到文档中
-------@Inherited :定义的annotation在被继承后仍保留在子类中
- 枚举&注解
- 注解&枚举
- 枚举,注解
- java枚举和注解
- 黑马程序员 枚举,注解
- 黑马程序员 枚举、注解
- 枚举类型和注解
- 枚举类型和注解
- Java枚举和注解
- Java- 装箱、枚举、注解
- 枚举和注解
- Java枚举类&注解
- 枚举和注解
- 枚举类和注解
- (七)枚举 & 注解
- java装箱,枚举,注解
- 枚举和注解
- 枚举和注解
- 第六周项目一—深复制体验(1)
- jquery 对象级插件开发框架
- shell script 追踪与调试
- Android SDK快速下载(转载)
- load图片生成
- 枚举&注解
- 文本框 Text
- Spring配置中transactionAttributes的使用方法和作用
- Unable to open a connection to the libvirt management daemon
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- c++ auto
- MySQL整型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT的范围
- windows下动态链接库和静态链接库的介绍