当前位置: 首页 > 知识库问答 >
问题:

将Java enum重构为一个核心项目,该项目不包含enum指向的类

左丘阳晖
2023-03-14

我有2个Java项目,core-project组件-项目

core-project组件-项目的依赖项。

组件项目最初包含一个枚举,例如:

public enum ResourceType {

  APP("app", "App", App.class),

  WORKSPACE("ws", "Workspace", Workspace.class);

  private String extension;

  private String description;

  private Class<?> klass;

  ResourceType(final String extension, final String description, final Class<?> klass) {
    this.extension = extension;
    this.description = description;
    this.klass = klass;
  }
}

问题是,我现在需要将ResourceType向下移动到核心项目中,但我无法移动工作区。类向下进入核心项目,它必须保留在组件项目中。

什么是一个优雅的方法来重构这个枚举core-project

共有1个答案

子车勇锐
2023-03-14

一种(不太优雅的)方式可能是这样的

public enum ResourceType {

    APP("app", "App", "com.example.App"),

    WORKSPACE("ws", "Workspace", "com.example.Workspace");

    private String extension;

    private String description;

    private Class<?> klass;

    ResourceType(final String extension, final String description, final String klass) {
        this.extension = extension;
        this.description = description;
        try {
            this.klass = Class.forName(klass);
        } catch (Exception e) {
            this.klass = null;
        }
    }
}

当课程不在的时候,一些NPE会期待。。。

 类似资料:
  • 所以我有一个多项目设置,看起来像这样

  • 抱歉,问题太简单了。我正在使用b2c扩展,无法找到定义的定义。有人能告诉我在哪里搜索那些文件吗。

  • 我打算从一个Java项目中提取几个类和包,并将它们放入另一个项目中(该项目将有一个可分发的jar)。这并不太难,但当然,进行如此大规模的重构会带来一些后果。也就是说,在原始项目中有许多类是我想要提取的类的子类。实现这种重构的最佳方法是什么?

  • 问题内容: 我是现代JS开发的新手,因此我需要有关此情况的帮助或建议。 情况: 我们有一个支持IE8(React 0.14)的React-Typescript-Redux项目。现在我们要升级到IE11和React 16,但应该支持IE8。 要求: 通过为每个构建使用不同的软件包和/或配置文件,减少浏览器版本之间的项目维护。 问题: 根据我到目前为止所做的研究,似乎无法通过选定的工具(npm,Web

  • 创建一个新的android项目后,Eclipse会自动创建一个“appcompat_v7”项目,在/src下没有任何文件。但它显示了样式错误。下一行是styles.xml中的第18行。 样式名称=“Widget.MediaRouter.MediaRouteButton” 父=“Widget.AppCompat.ActionButton” 我不知道Eclipse如何或为什么创建这个项目。 我是And

  • 描述如何向一个项目贡献的主要困难在于完成贡献有很多不同的方式。 因为 Git 非常灵活,人们可以通过不同的方式来一起工作,所以描述应该如何贡献并不是非常准确 - 每一个项目都有一点儿不同。 影响因素包括活跃贡献者的数量、选择的工作流程、提交权限与可能包含的外部贡献方法。 第一个影响因素是活跃贡献者的数量 - 积极地向这个项目贡献代码的用户数量以及他们的贡献频率。 在许多情况下,你可能会有两三个开发