枚举&注解
2015-04-14 11:39
162 查看
一、枚举:枚举本质上也是一个类
①枚举的定义:
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在被继承后仍保留在子类中
①枚举的定义:
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在被继承后仍保留在子类中
相关文章推荐
- Annotation & Enum :Java中注解和枚举的使用
- Java笔记--枚举&注解
- 黑马程序员_内省&注解&枚举知识总结
- 尚硅谷java学习笔记——9.java枚举&注解
- (七)枚举 & 注解
- ZOJ 3631 Watashi's BG(双向枚举)
- Spring-Aop注解形式案例<三>
- 注解代替枚举
- 深入研究:内存&字符串&结构体&共用体&枚举
- Java之枚举、自动装箱与注解(元数据)
- 黑马程序员:基础加强(可变参数、增强for、枚举、javabBean、BeanUtils、注解、泛型)
- Spring(四)基于注解配置IOC容器&基于注解实现声明式事务
- JPA & Hibernate 注解
- 重写_注解_枚举
- Hdu 1598 find the most comfortable road 并查集&枚举
- Spring(四)基于注解配置IOC容器&基于注解实现声明式事务
- Servlet3.0中Servlet的使用(注解&&配置文件)
- java枚举和注解
- Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861C Did you mean...【字符串枚举,暴力】
- find the most comfortable road 贪心&&枚举(并查集)