gpt4 book ai didi

java - 重写方法的多态参数

转载 作者:行者123 更新时间:2023-12-01 13:19:32 25 4
gpt4 key购买 nike

我们有一个例子,我们需要构建一个资源,它可以是两种类型之一:逻辑物理。对于每个资源子类型,我们都附加了一个Configuration,它可以是LogicalConfigurationPhysicalConfiguration

这样做是因为配置对象是可编辑的并且需要进行版本控制。例如一个资源可以有两个配置版本: Activity 的和草稿的。 Resource中提供了添加配置的方法addConfiguration(Configuration config)

现在,我们面临一个问题,LogicalConfiguration 可能会错误地传递给 PhysicalResourceaddConfiguration 方法。

Resource resource = new PhysicalResource()
Configuration config = new LogicalResourceConfiguration();
physicalResource.addConfiguration(config)

此调用将成功,并且将添加错误的配置。可以使用以下方法来避免这种情况。

  1. 我们执行 instanceOf 检查或定义成员 Type,但这会破坏多态性。
  2. 我们创建了两个方法 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com