首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能在课堂上做Java枚举吗?

你能在课堂上做Java枚举吗?
EN

Stack Overflow用户
提问于 2022-03-24 08:45:59
回答 1查看 78关注 0票数 0

我不是Java程序员,但我需要编写一些Java代码,我一直在阅读Java枚举,Java enum类是在Java 5中引入的一种特殊类型的类,用于替换int常量。我的问题是,由于有两种类型,一种是原语,一种是int,另一种是类,所以可以在类之外创建枚举吗?举个例子,可以给我以下几个吗?

代码语言:javascript
运行
复制
enum ClassEnum {
 Integer,
 Double,
 MyClass
}

我之所以想这样做,是因为我需要对3-4类进行switch,这是一种基于我在switch中得到的类的分派方法。我将要切换的所有N类都有自己的结构,因此需要根据它们的类型进行不同的处理。不过,它们都是一个公共抽象类的一部分。

EN

回答 1

Stack Overflow用户

发布于 2022-03-24 09:23:01

如果您使用的是最新版本的Java,那么您就有了许多具有密封类和模式匹配功能的选项。

下面是在您的上下文中可能有效的另一个选项。但不建议采用这种方法。

代码语言:javascript
运行
复制
public enum ClassType {
  NONE(None.class), // Could not determine.
  INTEGER(Integer.class),
  CHAR(Character.class),
  LONG(Long.class),
  FLOAT(Float.class),
  DOUBLE(Double.class),
  EMPLOYEE(Employee.class),
  ETC(Etc.class);

  private Class aClass;

  private ClassType(Class aClass) {
    this.aClass = aClass;
  }

  public static ClassType getClassTypeByClass(Class aClass) {
   return Arrays.stream(values()).filter(entry -> entry.aClass.equals(aClass)).findFirst().orElse(NONE);
  }
}

class Employee {}
class Etc {}
class None {}

以下示例代码用于验证:

代码语言:javascript
运行
复制
ublic class ClassTypeMain {

  public static void main(String[] args) {
    determineType(ClassType.getClassTypeByClass(Integer.class));
    determineType(ClassType.getClassTypeByClass(Etc.class));
    determineType(ClassType.getClassTypeByClass(String.class));
    determineType(ClassType.getClassTypeByClass(Employee.class));
  }

  private static void determineType(ClassType classType) {
    switch(classType) {
      case ETC: System.out.println(" I am ETC");
        break;
      case INTEGER: System.out.println(" I am INT");
        break;
      case NONE: System.out.println(" Could not determine type");
        break;
      default: System.out.println(" Something else ");
    }

  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71599355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档