枚举相关

传入code找value值

第一种:name-value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* driver-class-name
*/
public enum JdbcDriverTypeEnum {
/**
* mysql
*/
MYSQL("MYSQL","com.mysql.cj.jdbc.Driver");

private String name;

private String value;

JdbcDriverTypeEnum(String name, String value) {
this.name = name;
this.value = value;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public static String getDriverType(String name) {
for (JdbcDriverTypeEnum type : JdbcDriverTypeEnum.values()) {
if (name.equals(type.getName())) {
return type.value;
}
}
return null;
}
}

自己的实例

在枚举类中添加获取枚举对象的方法(注意:values()就是所有枚举对象数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.xm597.common.constants;

/**
* 说明:
*
* @author lyk
* time 2021/7/12 10:54
*/
public enum ApiErrorCodeEnum {
API_ERROR_CODE_1000(-1000, "请重新下载最新版本!"),
API_ERROR_CODE_1005(-1005, "公司营业执照审核未通过!"),
API_ERROR_CODE_1006(-1006, "请完善公司基础信息!");

private final int code;
private final String msg;

ApiErrorCodeEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}

public static ApiErrorCodeEnum getInstance(int code){
for (ApiErrorCodeEnum value : values()) {
if (code == value.getCode()){
return value;
}
}
return null;
}

public int getCode() {
return code;
}

public String getMsg() {
return msg;
}
}

调用

1
2
3
4
5
6
public String getJustTipsMsg(int apiErrorCode){
if (ApiErrorCodeEnum.getInstance(apiErrorCode) != null){
return ApiErrorCodeEnum.getInstance(apiErrorCode).getMsg();
}
return "";
}

第二种:value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public enum JdbcDriverTypeEnum {
/**
* mysql
*/
MYSQL("com.mysql.cj.jdbc.Driver"),
ORACLE("oracle.jdbc.driver.OracleDriver");

private String value;

JdbcDriverTypeEnum(String value) {
this.value = value;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public static String getDriverType(String name) {
for (JdbcDriverTypeEnum enumValue : values()) {
if (StringUtils.equals(name, enumValue.name())) {
return enumValue.value;
}
}
return null;
}
}

枚举内容可以同时放不同的基本类型数据

这种情况虽然暂时没有用到

比如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public enum TypeEnum{
MYSQL("hello"), ORACLE(123);

private String name;
private int index;
private Context context;

TypeEnum(String name){
this.name = name;
}

TypeEnum(int index){
this.index = index;
}

public String getName(){
return this.name;
}

public int getIndex(){
return this.index;
}

public void setContext(Context context){
this.context = context;
}

public Context getContext(){
return this.context;
}
}

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppCompatActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

TypeEnum type1 = TypeEnum.MYSQL.setContext(this);
TypeEnum type2 = TypeEnum.ORACLE.setContext(this);
//上面这俩取到的Context是同一个对象,type1.getContext()===type2.getContext()

System.out.println(type1.getName());//h
System.out.println(type2.getIndex());//123
}
}