使用接口和Map优雅初始化枚举

import java.util.HashMap;
import java.util.Map;

/**
 * @descrition 枚举
 * @since 2020-05-21 18:00
 */
public class EnumInterface {
    String TYPE_FACE = "face";
    String TYPE_HUMAN_BODY = "humanBody";
    String TYPE_MOTOR_VEHICLE = "motorVehicle";
    String TYPE_NON_MOTOR_VEHICLE = "nonMotorVehicle";

    // 人脸特征
    String[] faceCharacteristics = new String[]
            {"Gender", "Hat", "Glass", "Mask"};

    // 人体特征
    String[] humanBodyCharacteristics = new String[]
            {"SleeveStyle", "UpperColor", "UpperTexture", "LowerType", "LowerColor", "ShoesStyle", "ShoesColor",
                    "HairStyle", "Bag", "Appendix", "AgeRange", "HumanBodyGender"};

    // 机动车特征
    String[] motorVehicleCharacteristics = new String[]
            {"PlateText", "VehicleClass", "VehicleColor", "VehicleHead", "PlateClass",
                    "PlateColor", "PlateState", "VehicleRoofItem", "VehicleFrontItem", "FaceCoveredItem", "SpecialVehicle"};

    // 非机动车特征
    String[] nonMotorVehicleCharacteristics = new String[]
            {"VehicleType", "VehicleColor", "VehicleHead", "IllegalPassenger", "Gender", "UpperStyle", "UpperColor", "Headwear", "PackStyle"};

    Map search = new HashMap() {
        {
            put(TYPE_FACE, faceCharacteristics);
            put(TYPE_HUMAN_BODY, humanBodyCharacteristics);
            put(TYPE_MOTOR_VEHICLE, motorVehicleCharacteristics);
            put(TYPE_NON_MOTOR_VEHICLE, nonMotorVehicleCharacteristics);
        }
    };

}

这里的双括号”{{}}”用来初始化,使代码简洁易读。
第一层括弧实际是定义了一个匿名内部类 (Anonymous Inner Class),第二层括弧实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。
同理,list也可这样赋值:

private List list = new ArrayList() {
        {
            add("tom");
            add("jerry");
            add("hkj");
        }
    };

你可能感兴趣的:(使用接口和Map优雅初始化枚举)