在java中使用enum作为类

2024-03-24

我有一个班级enum在它和类中,其中包含list该对象的

public enum State {
    ACTIVE,NOT_ACTIVE;
}

public class SomeObject {
    State state;        
    public SomeObject(State state) {
        this.state = state;
    }
}    

public class SomeObjects{
    State state;
    ArrayList<SomeObject> objects = new ArrayList<Main.SomeObject>();       
    public SomeObjects(int count) {
        state = State.ACTIVE;
        for (int i = 0; i < count; i++) {
            objects.add(new SomeObject(state));
        }
    }       
    public void changeState(State state) {
        this.state = state;
    }
}

现在如果我使用changeState(State.NOT_ACTIVE)它将改变状态一些对象并在所有对象中list或者只在 SomeObjects 中?

如果只在一些对象,我该怎么办改变状态在列表中的所有对象中changeState()?

是创建包含该枚举的类only way在这种情况下?

UPDATE:谢谢,但就我而言,我需要更改所有对象的状态

this.state = state;

现在,如果我使用 changeState(State.NOT_ACTIVE) ,它将更改 SomeObjects 和列表中所有对象的状态,还是仅更改 SomeObjects 中的状态?

我不完全确定你的想法是什么。

如果你打电话changeState(NOT_ACTIVE)在某些实例上SomeObjects,然后根据方法的定义,它将设置该对象的state领域是NOT_ACTIVE。这个单个方法调用不可能更改多个对象,因为它对单个变量执行单个赋值。

如果仅在 SomeObjects 中,我应该如何使用changeState() 更改列表中所有对象的状态?

如果你想要changeState方法将状态应用于包含在其中的所有对象objects字段,那么你可以用一个简单的循环让它做到这一点:

public void changeState(State state) {
    this.state = state;
    for (SomeObject obj : objects) {
        obj.state = state;
    }
}

在这种情况下,创建包含该枚举的类是唯一的方法吗?

我再次不清楚你在这里到底在想什么。你不想设置state所有的价值SomeObject包含在一个实例中SomeObjects实例?也就是说,在已经存在的实例上设置值,已经定义的类?

如果是这样,则可以通过在循环中设置值来完成上述操作。该字段是一个枚举这一事实并没有什么区别;任何原始类型或引用类型在这里的行为都是相同的。


编辑回答评论:啊,听起来根本问题是首先使用了一个字段。

鉴于您想要的所有内容objects集合始终具有完全相同的状态,它们都拥有一个单独的状态可能是错误的state场地。这是一个建模错误,因为SomeObject实例没有really独立地保持/控制自己的状态。

我之前要建议的是你应该实施methods而不是直接访问字段——这就是现在引人注目的事情。而不是SomeObject有一个state field,它应该有一个getState() method。对于给定的实例,您有办法获取其当前状态 - 但这不一定实现为直接对象引用。

而这个方法的实现应该只是获取包装的状态SomeObjects实例(这不是一个信息特别丰富的类名)。因此可以按如下方式实现:

public class SomeObject {
    private final SomeObjects parent;

    public SomeObject(SomeObjects parent) {
        this.parent = parent;
    }

    public State getState() {
        return parent.state; // Ideally accessed via method too
    }
}

这与我对你的设计的理解是一致的——每个SomeObject与其包装具有相同的状态SomeObjects(因此隐含地必须有一个父母SomeObjects始终定义的实例)。上面的代码几乎是该设计的精确表示。

(这里的枚举仍然没有什么特别的;如果你返回,事情会以相同的方式工作int or String or Map<MyFoo, Set<Future<ResultSet>>.)

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

在java中使用enum作为类 的相关文章

  • 在java中轮询Http服务器(重复发送http get请求)

    当对其进行 REST 调用时 我的 Web 服务器会发送一些信息 我想不断轮询该服务器 间隔5秒后重复发送HTTP GET请求 以检查返回的信息是否有任何变化 做到这一点最有效的方法是什么 您能提供一些代码示例吗 请注意 我只想开发客户端代
  • 我是否需要安装 SQLite 才能使 SQLiteJDBC 正常工作?

    我想我只是没有 明白 如果我的计算机上尚未安装 SQLite 并且我想编写一个使用嵌入式数据库的 Java 应用程序 并且我将 SQLiteJDBC JAR 下载 导入到我的项目中 那么这就是我所需要的吗 或者 我是否需要先安装 SQLit
  • 使用 Tabula 通过 Python 读取 pdf 时出现 Java 错误

    我已经安装了 tabula 库 用于使用 python 将 pdf 读取到 pandas 数据框中 但是当我运行代码时 import tabula df tabula read pdf sample1 pdf pages 1 我得到了例外
  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • Thymeleaf 3 Spring 5 映射加载字符串而不是 HTML

    我正在尝试将 Spring 5 和 Thymeleaf 3 一起配置 我正在 Eclipse 上工作 我使用 全新安装 构建并使用 springboot run 运行应用程序 我已经设置了一个控制器和几个模板 但 Thymeleaf 似乎找
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • Runtime.exec 处理包含多个空格的参数

    我怎样才能进行以下运行 public class ExecTest public static void main String args try Notice the multiple spaces in the argument Str
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • Java Applet 中的 Apache FOP - 未找到数据的 ImagePreloader

    我正在研究成熟商业产品中的一个问题 简而言之 我们使用 Apache POI 库的一部分来读取 Word DOC 或 DOCX 文件 并将其转换为 XSL FO 以便我们可以进行标记替换 然后 我们使用嵌入到 Java 程序中的 FOP 将
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • Common Lisp 中的 LET 与 LET*

    我理解 LET 和 LET 并行绑定与顺序绑定 之间的区别 并且作为理论上的问题 它非常有意义 但有没有什么情况你曾经真正需要过 LET 在我最近查看的所有 Lisp 代码中 您可以将每个 LET 替换为 LET 而无需进行任何更改 编辑
  • 酒吧升级降级了我的主包

    这是我的依赖项列表 dependencies browser any polymer any polymer elements any angular any lawndart any validate any http utils any
  • 如何使用c#在现有的word文档中插入图像

    我正在与word and c 使用我的代码拍摄快照并将其保存在特定文件夹中 例如 C Temp 现在我想将图像保存到现有的 Word 文档中 非常感谢任何有关简短代码示例的帮助 会更喜欢使用Microsoft Office Interop
  • 如何在给定的文本片段中找到匹配括号或大括号的位置?

    许多文本编辑器和 IDE 都有一项功能 当光标放置在其中一对中的开始或结束字符上时 会突出显示匹配的括号 方括号或大括号 给定文本文件中左括号或右括号的位置 使用什么算法来查找匹配括号的位置 请记住 这些字符可以嵌套 因此只需向前或向后扫描
  • 关于创建包含按钮的图库视图的问题?

    我创建了一个包含按钮的图库 示例代码如下 public class Adapter extends BaseAdapter private Context mContext public ImageAdapter Context c mCo
  • 如何在 Bootstrap 下拉悬停上添加延迟

    我正在尝试为引导下拉菜单添加延迟 我已经添加了 css 以使下拉列表在悬停时显示 你可以在这里测试一下http www bootply com YcVBzvXqrR http www bootply com YcVBzvXqrR 这是我的
  • 如何在ios中写入json文件

    这里我正在读取和写入一个 json 文件 读取正确 但当我写入文件时 它不会在 json 文件中写入数据 这是我的代码 reading Json file NSString filePath NSBundle mainBundle path
  • apache mysql - 3306 上的“数据包乱序”

    我刚刚全新安装了 Apache 服务器 2 2 一切正常 当我访问本地主机时 我得到 它有效 我刚刚安装了 mySQL5 5 当我访问 localhost 3306 时 我只是得到乱码 J 5 5 22 4 LM D p 6 I 4 9z
  • 对象适配是否会破坏 Chrome 中的某些图像长宽比?

    I m using object fit cover on some IMG tags within a wrapper div to try to fill a div with the image I ve noticed that s
  • 密码输入字段在焦点/类型上从文本更改为密码?

    我有一个注册表单 其中输入的标题位于文本框中 当您单击该框时 文本消失 但在密码上我希望预览文本保留为 密码 而不是 但是当用户单击文本框时应清除文本 并且输入的文本应显示为 这是按钮的代码
  • 如何生成从最短到最长的所有可能字符串的列表

    我需要使用数字和字母生成无限的字符串列表 第一个字符串应该只是 a 然后是 b 到 z 然后是 0 到 9 然后是 aa ab 等 我可以轻松地用一个字符生成那些 但随后它会变得更加复杂 因此 假设我们已经有了所有可能字符串的列表 allS
  • Apache + mod_wsgi - Python 不加载已安装的模块

    我有一个带有 mod wsgi 的 Apache 服务器 运行 Python 2 7 脚本 该脚本使用通过 pip 安装的 python Pillow 模块 通常使用运行脚本python script py工作正常 但从 wsgi 运行脚本
  • 使用自定义属性创建有效的站点地图

    我正在一个网站上工作 我的网站有一个 sitemap xml 文件 该文件可以看到here http www ecofic com resources root sitemap xml 如果你向下滚动 你会看到一个url包含一些自定义标签的
  • Git hook 用于根据推送到远程服务器的分支更新各种 Web 文件夹

    我正在使用 Gitosis Debian Lenny 开发一个 Web 应用程序 我希望能够将其推送到不同的远程存储库 位置 从而允许应用程序的 前沿 发布候选 和 生产 版本镜像物理 Web 目录和代码库 我希望每个目录都有一个应用程序分
  • 使用纯 Observable 与数组(来自订阅)

    我想知道有关使用纯可观察值与订阅可观察值并使用数组的最佳实践 选项 1 纯可观察 this schools this angularFire database list schools 然后在 HTML 中使用异步管道 和 rxjs 运算符
  • 替换 JS 中的变音符号

    我正在比较字符串 并且必须替换 JS 中的变音符号 但 JS 似乎无法识别字符串中的变音符号 文本来自数据库 在浏览器中变音确实显示得很好 function replaceUmlauts string value string toLowe
  • 如何在C#中实现内存事务范围?

    我们有一个缓存 我想在其中放置一些事务范围 以便任何进程都必须显式 提交 它想要对缓存对象执行的更改 并且可以在进程中途失败时回滚任何更改 现在 我们正在根据 get 请求深度克隆缓存的对象 它可以工作 但它不是一个干净的解决方案 并且还涉
  • ASP.NET - bin 目录与在 web.conf 中添加程序集

    我对 ASP NET 编程相对较新 但不是一般的编程 并且我一直在研究移交给我的一个项目 在这个项目中 有一个 bin 目录 其中包含大量各种 DLL 文件 然后 在 web conf 文件中的程序集结构内 在 XML 内 添加了大量其他程
  • ASP.NET MVC 4 中的 Web Api 中的路由

    我正在将 Web api 与 ASP NET MVC 4 结合使用 我有以下命名的控制器 客户控制器 控制器 客户 ApiController ApiController 早些时候我的CustomerApiController被命名为Cus
  • 在java中使用enum作为类

    我有一个班级enum在它和类中 其中包含list该对象的 public enum State ACTIVE NOT ACTIVE public class SomeObject State state public SomeObject S