如何将Java关联枚举中对应Alphabet.A的Phonetic枚举值转为字符串
Java关联枚举的字符串转换方案
首先需要完善你的枚举定义,原代码缺少必要的成员变量、构造函数和映射逻辑,以下是完整的实现步骤:
1. 完善枚举的完整定义
Alphabet枚举
public enum Alphabet { A, B, C; }
Phonetic枚举
补充关联字段、构造函数,以及根据Alphabet查找对应Phonetic的方法:
public enum Phonetic { Alpha(Alphabet.A, "Amber"), Bravo(Alphabet.B, "Beta"), Charlie(Alphabet.C, "Cookie"); private final Alphabet alphabet; private final String alias; // 构造函数初始化关联关系 Phonetic(Alphabet alphabet, String alias) { this.alphabet = alphabet; this.alias = alias; } // 静态方法:根据Alphabet匹配对应的Phonetic枚举 public static Phonetic getByAlphabet(Alphabet target) { for (Phonetic phonetic : values()) { if (phonetic.alphabet == target) { return phonetic; } } throw new IllegalArgumentException("无匹配的Phonetic枚举对应Alphabet: " + target); } // 获取自定义别名的Getter方法 public String getAlias() { return alias; } }
2. 实现转换为字符串
找到Alphabet.A对应的Phonetic枚举后,有两种常见的字符串转换方式:
方式1:获取枚举本身的名称(如"Alpha")
// 匹配Alphabet.A对应的Phonetic Phonetic phoneticA = Phonetic.getByAlphabet(Alphabet.A); // 转换为枚举名称字符串 String phoneticName = phoneticA.name(); System.out.println(phoneticName); // 输出:Alpha
方式2:获取自定义的别名(如"Amber")
如果需要输出枚举构造时传入的第二个参数,调用对应的Getter方法即可:
String phoneticAlias = phoneticA.getAlias(); System.out.println(phoneticAlias); // 输出:Amber
优化查找效率(可选)
如果枚举值数量较多,循环查找效率较低,可以用静态Map提前缓存映射关系:
public enum Phonetic { // 枚举实例不变 Alpha(Alphabet.A, "Amber"), Bravo(Alphabet.B, "Beta"), Charlie(Alphabet.C, "Cookie"); private final Alphabet alphabet; private final String alias; // 静态缓存映射 private static final Map<Alphabet, Phonetic> ALPHABET_MAP = new HashMap<>(); static { // 初始化时填充Map for (Phonetic phonetic : values()) { ALPHABET_MAP.put(phonetic.alphabet, phonetic); } } Phonetic(Alphabet alphabet, String alias) { this.alphabet = alphabet; this.alias = alias; } public static Phonetic getByAlphabet(Alphabet target) { Phonetic phonetic = ALPHABET_MAP.get(target); if (phonetic == null) { throw new IllegalArgumentException("无匹配的Phonetic枚举对应Alphabet: " + target); } return phonetic; } public String getAlias() { return alias; } }
内容的提问来源于stack exchange,提问作者Servant Of God
相关产品推荐
相关产品推荐

