gpt4 book ai didi

java - 如何在不强制转换的情况下存储传递给父类(super class)的依赖项的本地副本

转载 作者:行者123 更新时间:2023-11-30 10:22:19 24 4
gpt4 key购买 nike

考虑以下在构造函数中注入(inject)依赖项的情况:

class Dependency extends AbstractDependency {
}

class Super {
private final AbstractDependency dependency;

public Super(AbstractDependency dependency) {
this.dependency = dependency;
}

protected AbstractDependency getDependency() {
return dependency;
}
}

class Sub {
private final Dependency dependency;

public Sub() {
super(new Dependency(...));
this.dependency = (Dependency)dependency;
}
}

我想要实现的是让 Sub 方法能够使用 AbstractDependency 的具体子类,而不必一直强制转换。

我的问题:是否有一种优雅的方法可以摆脱 Sub 的构造函数中的强制转换? super(dependency = new Dependency()) 是不允许的。

最佳答案

我认为你最好使用泛型类型,这样你就不必一开始就保留重复的引用:

class Super<D extends AbstractDependency> {
private final D dependency;
//...
}

class Sub extends Super<Dependency> {
public Sub() {
super(new Dependency(...));
}
}

关于java - 如何在不强制转换的情况下存储传递给父类(super class)的依赖项的本地副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424539/

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