相关疑难解决方法(0)

为什么Java不允许在枚举中覆盖equals(Object)?

我注意到以下代码片段......

@Override
public boolean equals(Object otherObject) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

......不允许的枚举,由于该方法equals(Object x)被定义为finalEnum.为什么会这样?

我想不出任何需要覆盖equals(Object)Enum的用例.我只是想知道这种行为背后的原因.

java enums api-design

38
推荐指数
1
解决办法
2万
查看次数

我们什么时候需要装饰模式?

什么时候需要使用装饰模式?如果可能的话,给我一个非常适合该模式的真实世界示例.

design-patterns decorator

31
推荐指数
4
解决办法
6389
查看次数

将装饰器设计模式用于类的层次结构

查看以下(简化)类的层次结构:

>     Email (base class) 
>     SimpleEmail extends Email
>     HtmlEmail extends Email
Run Code Online (Sandbox Code Playgroud)

我需要修饰Email.send()以添加限制功能.我需要实例化SimpleEmail,HtmlEmail或其他类似的Email子类.

这个模式到底应该是什么样的?我的猜测(需要纠正)如下:

class abstract EmailDecorator
   -> Define a constructor: EmailDecorator(Email component)
   -> Implements all methods of Email and passes values through to component
   -> Adds functionality to send() method
class SimpleEmailDecorator extends EmailDecorator
   -> Define a constructor: SimpleEmailDecorator(SimpleEmail component)
   -> Implement all methods of SimpleEmail and pass through to component
class HtmlEmailDirector extends EmaiDecorator
   -> Same as SimpleEmailDecorator
Run Code Online (Sandbox Code Playgroud)

我的大脑并没有围绕我如何正确处理我需要"增强"的基类的重要现有子类.大多数示例将其简化为继承问题变得混乱的程度.

java design-patterns decorator

2
推荐指数
1
解决办法
2795
查看次数

标签 统计

decorator ×2

design-patterns ×2

java ×2

api-design ×1

enums ×1