将字符串转换为 Enum 类

2024-03-25

免责声明:我不会说我是最有经验的 Java 人。可能有更简单的方法来完成我在示例中所做的事情。但这是一个关于将字符串条目转换为枚举类而不是枚举变量的问题。我尽力解释。

这是我想做的事情的简单版本。我将有两个不同的枚举,我想根据用户的需求选择其中之一。在代码中,这个例子是

public enum Letters {
    A, B, C, D, E, ... , X, Y, Z
}

public enum Numbers {
    ONE, TWO, THREE, ..., EIGHT, NINE, TEN
}

public static void main(String [] args) {

    System.out.println("Enter in you choice, letters (Letters) or numbers(Numbers)");
    String entry = "";
    InputStreamReader input = new InputStreamReader(System.in);
    BufferedReader reader = new BufferedReader(input);
    try {
        entry = reader.readLine();
    }
    catch(Exception e){};
    ...
}

我想让用户在输入“字母”时能够获取字符串条目并将其转换为对字母枚举的变量引用。省略号是代码的占位符。我想最终使用这个,这样我就可以使用

for (answer n : variable.values()) {
    System.out.println(n);
}

代替

if (answer.equals("Numbers")) {
    Numbers n;
    for (n : Numbers.values()) {
        System.out.println(n);
    }
} else {
    Letters l;
    for (l : Letters.values()) {
        System.out.println(l);
    }
}

我试过做

Class<?> c = Class.forName("Letters");

但它不起作用。

在我的实际示例中,我有 3 个 .java 文件,其中包含单独的类,并且每个文件中都有一个枚举。有 Sandwich、Beer 和 Chip 类,它们的枚举是 Sandwiches、Beers、Chips。这些类实现了一个接口 VendingMachineItem。最后,该界面是自动售货机包的一部分。我不知道这些是否重要,但这就是我能提供的所有信息。


以下作品(在Eclipse下使用Java6测试):

package com.bob;
public class Test
{
    public enum Letters {
        A, B, C, D, E
    }

    public enum Numbers {
        ONE, TWO, THREE, FOUR, FIVE
    }

    public static void main(String [] args) throws Exception 
    {

        System.out.println("Enter in you choice, letters (Letters) or numbers(Numbers)");
        String entry = "";
        InputStreamReader input = new InputStreamReader(System.in);
        BufferedReader reader = new BufferedReader(input);
        entry = reader.readLine();

        Class<Enum<?>> clazz = (Class<Enum<?>>)Class.forName("com.bob.Test$" + entry);

        for (Enum<?> x : clazz.getEnumConstants())
        {
            System.out.println(x);
        }

    }
}

请注意,枚举的完全限定类名是com.bob.Test$Letters and com.bob.Test$Numbers由于是内部类。错误处理留作练习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串转换为 Enum 类 的相关文章

随机推荐

  • Java .policy 文件 - 如何防止 java.util.Date() 被访问

    我正在摆弄 java policy 文件 并想知道如何做一些事情 例如阻止调用 java util Date 我只是想更好地了解 policy 文件的工作原理以及如何将其用于沙箱代码 恐怕你在那里就不走运了 正如帕洛 埃伯曼所说 packa
  • 超多重非虚拟继承中基类的作用域运算符

    考虑这个 完全无意义 但完全有效 类继承 struct Area int size struct Pattern int size struct R Area Pattern struct C Area Pattern struct X R
  • 如何使用 Python 从 Outlook 帐户发送带有附件的邮件

    我已尝试使用以下代码发送附件 但文件未发送 仅发送内容 请帮忙 SERVER smtp example com FROM email protected cdn cgi l email protection TO listOfEmails
  • 隐藏导航栏,但是当我转换到上一个视图(弹出)时,它会暂时显示旧的后退按钮。为什么?

    我在导航控制器中有视图控制器 根 RootViewController 第二 ReadingViewController 但在第二个视图控制器中我想禁用导航栏UIToolBar 因为我不需要标题并想要更多按钮 例如 iBooks 或 Fac
  • 带参数的自定义激活

    我正在尝试在 Keras 中创建一个可以接受参数的激活函数beta像这样 from keras import backend as K from keras utils generic utils import get custom obj
  • Sublime Text 更改“Goto Line...”快捷方式

    这个问题是专门针对Mac的 但如果你愿意的话 你可以启发Windows用户 Goto Line 的命令是什么 用于更改 Goto Definition 的快捷方式 如下所示 keys cmd D command goto definitio
  • “财产价值无效。”为什么 Visual Studio 不允许我将图片分配给图像?

    在 WPF 窗口上我有一个图像对象 我单击按钮分配源 弹出窗口 我在其中添加了图像 单击添加 当图像加载时 它没有显示图像 而是显示一个白色框 我尝试将这个白框指定为图像源 它只是说 属性值无效 解决方案资源管理器清楚地显示图像在那里 我可
  • 无法将mysql驱动添加到jboss

    好吧 这让我发疯 特别是因为已经有很多类似的问题了 但没有答案对我有用 我的 Windows 7 机器上有 jboss 7 1 1 通常从 eclipse 运行它 并且想要使用 mysql 我做了以下事情 1个创建的目录jboss as 7
  • 使用 pandas 数据框的 Seaborn 热图

    我正在努力将 pandas 中的数据帧调整为 Seaborn 热图 或实际上是 matplotlib 的正确格式以制作热图 我当前的数据框 称为 data yule 是 Unnamed 0 SymmetricDivision test Mu
  • 如何将 jQuery 变量传递给 PHP 变量?

    如何在不刷新页面的情况下将变量从 jQuery 传递到 PHP 当我单击一个复选框时 我想将一个变量从 jQuery 传递到 PHP 我也在使用formdialog 我的 PHP 代码 gt gt 我的 JavaScript 代码 func
  • '/usr/include/c++/4.4/bits/' 中的位的含义是什么

    usr include c 4 4 bits 中的位的含义是什么 Linux 当然是 gcc 根据 libstdc 文档 该文件夹的官方名称是 标准标头包含的文件 以及位中的其他文件 目录 其中 位 可能只是意味着一些微不足道的东西 例如
  • Angular 2 在 iframe 内触发插值

    我想在 iframe 中显示模板化网页的内容 但加载内容后 模板不会按角度进行插值 是因为变化检测系统吗 可以通过其他方式实现吗 Component selector my app template export class App tem
  • ViewState 仅在 Safari 中无效

    我维护的网站之一很大程度上依赖于使用ViewState 这不是我的代码 但是 在某些页面上ViewState过于臃肿 Safari 会抛出一个 Validation of viewstate MAC failed error 这似乎只发生在
  • 使用Python的CGI表单提交按钮

    我正在尝试创建一个cgi 表单 允许用户输入一个单词 然后它将获取该单词并将其发送到下一页 另一个cgi 我知道如何使用 html 文件来做到这一点 但是当涉及到使用 python cgi 时 我迷失了 这是我需要做的 但它是 html 格
  • 为什么我的通知图标在 Oreo 中无法正确显示?

    很长一段时间以来 我们的应用程序中都有通知 效果很好 我有一个小的 彩色的 png 图标 用于它们 过去运行良好 在奥利奥中 该图标无法正常显示 它只是一个灰色的方块 查看设备上的抽屉 似乎系统 gmail 等现在都有单色图标 因此我怀疑与
  • 如何为 MAC OS X 安装 libgluezilla

    我正在尝试在具有嵌入式 Web 浏览器控件的 Mac 上运行 Mono 应用程序 程序运行 但现在显示浏览器并输出一条消息 未找到 libgluezilla 要获得网络浏览器支持 您需要安装 libgluezilla 我已经搜索过 但不知道
  • 寻找多条短路径的算法

    寻求一种能够产生 N 条短路径的算法 有没有人有算法的经验来寻找多条短路径在有向图中 我的应用程序用于语言 查找同义词链 但从逻辑上讲 这可能用于地理或社交网络 我想要明显不同的路径 而不仅仅是沿途交换几个节点 我真的很想知道是否有办法避免
  • Java中的线程何时从内存中删除? [复制]

    这个问题在这里已经有答案了 来自 Java API 文档 Java虚拟机继续执行线程 直到遵循 发生 所有非守护线程的线程都已死亡 或者通过返回 从调用 run 方法或抛出异常 传播到 run 方法之外 我希望我的假设是正确的 一旦线程完成
  • Cloud Firestore 中的 SQL LIKE 运算符?

    我使用 Firebase 实时数据库已经有一段时间了 今天我遇到了 Cloud Firestore 我不知道如何在 Firestore 上使用 LIKE 运算符 Firebase 实时数据库 ref child user orderByCh
  • 将字符串转换为 Enum 类

    免责声明 我不会说我是最有经验的 Java 人 可能有更简单的方法来完成我在示例中所做的事情 但这是一个关于将字符串条目转换为枚举类而不是枚举变量的问题 我尽力解释 这是我想做的事情的简单版本 我将有两个不同的枚举 我想根据用户的需求选择其