作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个例子,我们需要构建一个资源
,它可以是两种类型之一:逻辑
或物理
。对于每个资源子类型,我们都附加了一个Configuration
,它可以是LogicalConfiguration
和PhysicalConfiguration
。
这样做是因为配置对象是可编辑的并且需要进行版本控制。例如一个资源可以有两个配置版本: Activity 的和草稿的。 Resource
中提供了添加配置的方法addConfiguration(Configuration config)
现在,我们面临一个问题,LogicalConfiguration
可能会错误地传递给 PhysicalResource
的 addConfiguration
方法。
Resource resource = new PhysicalResource()
Configuration config = new LogicalResourceConfiguration();
physicalResource.addConfiguration(config)
此调用将成功,并且将添加错误的配置。可以使用以下方法来避免这种情况。
instanceOf
检查或定义成员 Type
,但这会破坏多态性。addLogicalConfiguration
/addPhysicalConfiguration
,其中一个在运行时失败。解决这个问题最合适的方法是什么?或者是否有特定的模式来解决此类问题?
最佳答案
您可以向 Resource 类添加泛型类型参数:
class Resource<T extends Configuration> {
public void addConfiguration(T config) {}
}
然后,您可以:
class PhysicalResource extends Resource<PhysicalConfiguration> {...}
class LogicalResource extends Resource<LogicalConfiguration> {...}
关于java - 重写方法的多态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156170/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!