8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

设计抽象数据类用抽象类来操作这些数据

Hydrargyrum 2月前

28 0

我有许多仅用于存储数据的类。它们有许多共同的字段。因此,我创建了一个结构。以下是代码:public class DepositMono extends DefaultDeposit { Long id; Periodic

我有许多仅用于存储数据的类。它们有许多共同的字段。因此,我创建了一个结构。

以下是代码:

public class DepositMono extends DefaultDeposit {
    Long id;
    Periodic periodic;
}

//exist only to be able that type in the abstract service
public class  DefaultDeposit extends AbstractDeposit {

}

public abstract class AbstractDeposit {
    private Long idDeposit;
}

我创建了一个抽象服务类来处理所有类中存在的字段。

public interface DepositInterface {
    AbstractDeposit fillDeposit(Deposit deposit);
}

public abstract class AbstractDepositService {

    protected AbstractDeposit prefillDeposit(Deposit deposit) {
        DefaultDeposit defautDeposit = mapper.toDto()...

        return defaultDepotPublication;
    }

}

public class MonoDepositService extends AbstractDepositService implement DepositInterface{
    @Override
    public AbstractDeposit fillDeposit(Deposit) {

        DepositMono depositMono = (DepositMono) prefillDeposit(deposit);

        return depotPublicationRecord;
    }
    
}

实际上在 MonoDepositService 中,我收到一个错误:DefaultDeposit 无法转换为 DepositMono

因此,我寻找一种设计,以便能够在抽象类中执行通用过程,并在另一个类中执行其余特定过程。

通用肯定是一个解决方案,还有其他选择吗?

帖子版权声明 1、本帖标题:设计抽象数据类用抽象类来操作这些数据
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Hydrargyrum在本站《oop》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 另一种选择是面向对象方法。目前,您正在使用过程方法(数据结构和服务 - 过程)。在面向对象方法中,您会将行为置于对象中,而不是置于服务中。

  • 在 Java 中, downcasting 并不总是可行的,因为可能存在不兼容问题。假设您有一个 Bird 类、一个 Eagle 子类和另一个 Sparrow 子类。现在,如果您的 Bird 被实例化为 Sparrow,那么您将无法将其向下转型为 Eagle。

    您的问题是,您实例化了超类,然后尝试将其向下转换为子类。相反,您可以创建一个 class 包含泛型并能够实例化它的类,例如:

    public class GenericClass<T> {
        private T t;
    
        public GenericClass() {
            this.t = new T(); // DOES NOT COMPILE
        }
    
        public T getObject() {
            return t;
        }
    }
    

    感谢 https://www.baeldung.com/java-generic-type-instance-create

    当然,你可以将此实例移动到你想要的位置,也可以传递参数。因此,你可以这样做

    GenericClass<MyClass> gc = new GenericClass<MyClass>();
    MyClass myobject = gc.getObject();
    
返回
作者最近主题: