gpt4 book ai didi

java - 必要的时候如何沮丧?

转载 作者:行者123 更新时间:2023-12-01 20:20:07 26 4
gpt4 key购买 nike

我的公司软件面临一个令人沮丧的问题,但我无法找到解决方法。 (这是既定的东西,我无法改变整个概念)

我将尝试通过一个示例向您提供整个背景:基本上,我们有 2 个软件组件,比如说 BrickHigh、BrickLow。 BrickLow 可以使用 BrickHigh 中的所有内容,但 BrickHigh 看不到 Bricklow。

在 BrickHigh 中有一个 Animal 类(数十个属性)及其 DAO:

public class Animal .. {
//attributes...
}

在 BrickLow 中,我创建了一个扩展 Animal 的 Cat 类(还有数十个未映射的属性)。

public class Cat extends Animal {
//attributes
}

我们的目的是为每个映射的属性创建一个父类(super class)(Animal)。但我不能在我的应用程序中使用我的动物类,因为由于整个应用程序都使用 Cat,因此需要进行太多更改。

但显然,从 DAO 获取 Animal 后,我无法将其转换为 Cat,因为 Java 不允许这样做,而且我需要来自 Animal 的所有信息。

由于我的 BrickHigh 看不到我的 BrickLow,因此不存在诸如 Animal Animal = new Cat(); 之类的东西。有可能。

我的第一个想法是在 Cat 中创建一个构造函数,它将 Animal 作为参数

public Cat(Animal a) {
super(a);
}

但是我的 Animal 类中必须有什么构造函数?好像不行。

最佳答案

But what my constructor must be in my Animal class? It doesn't seem to work.

类似这样的事情:

   public Animal(Animal other) {
this.field1 = other.field1;
this.field2 = other.field2;
// etc
}

但是,我认为使用对象工厂模式可能会更好;即让您的 DAO 类采用一个参数,该参数是一个可以创建 Animal 实例的 factory 对象。当您在使用 BrickLow API 的代码中使用 DAO(来自 BrickHigh)时,您可以使用生成 Cat 实例而不是 Animal 实例的工厂来实例化。

关于java - 必要的时候如何沮丧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44948454/

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