0

我有一个问题,我计算一个数字,根据这个数字我必须调用一个特定的方法。我最终想到了创建一个枚举,其中每个元素都调用另一个方法。正如这篇文章中描述的那样https://stackoverflow.com/a/4280838/2426316

但是,那个答案的海报也提到它不会被认为是一个很好的设计,所以我想知道我应该怎么做。实现使用这种设计的算法是否安全?如果没有,我还能做什么?

4

2 回答 2

2

Java Enum 类型是类型安全枚举模式的语言级别支持(语法糖)。

类型安全枚举模式和 Java 枚举类型(与 C# 枚举等其他解决方案相比)的优点之一是它旨在支持方法,甚至是抽象方法。

可能的用法:

  • 您将使用策略模式但有一组固定策略的地方
  • 用多态性替换 switch 语句(首选)
  • ...

了解更多信息:

  • 有效的 Java,作者 Joshua Bloch。
    • 第一版包括类型安全的枚举模式
    • 第二版包括 Java Enum 类型
  • 重构,由 Martin Fowler 撰写(例如,用多态性替换条件
于 2013-08-12T15:46:49.747 回答
-3

好吧,安全可能不是这里的问题。这是不常见的,但可能很难遵循。

我的建议是通过以下两种方式之一来解决这个问题:

  1. 使用 ENUMS 但不要在 ENUM 代码本身中包含函数调用。而是有一个函数,该函数explore(Level1 level){...}具有一个 switch 语句,该语句根据传递的级别进行区分。
  2. 使用 Lambda 表达式。这是更简洁的解决方案,因为它允许您将函数作为参数传递;遗憾的是,在 Java 8 发布之前,Java 不会原生支持这种方法。然而,有一些实现来模拟 Lambda 表达式,最著名的可能是lambdaj
于 2013-08-12T15:26:47.997 回答