gpt4 book ai didi

java - 实现具有泛型和接口(interface)的组合

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:01 27 4
gpt4 key购买 nike

我正在努力实现以下目标:

我的类 X 有一个泛型 Y。然而,这个泛型 Y 需要访问 X 的资源,我想通过接口(interface)处理这个问题,以允许其他人从任意选择的类继承。

然而,我当前的方法会导致泛型循环:

public interface X<y extends Y<x extends X<y extends...>>> {

Object getO();

}

public interface Y<x extends X<y extends Y<x extends ....>>> {

void doSomething();

}

我想实现的:

public class Goal<x X<y (this class)> implements Y {

private final x minix;

public Goal(x minix) {
this.minix = minix;
}

@Override
public doSomething() {
x.getO();
}
}

如果没有使用抽象类和组合的构造函数实现的常见方式,我如何实现我的目标?

最佳答案

接口(interface)的通用类型参数相互依赖。要解决递归问题,您必须为每个接口(interface)引入第二个类型参数:

interface X<A extends Y<A, B>, B extends X<A, B>> {

A getY(); //example
Object getO();

}

interface Y<A extends Y<A, B>, B extends X<A, B>> {

B getX(); //example
void doSomething();

}

目标类:

public class Goal<B extends X<Goal<B>, B>> implements Y<Goal<B>, B> {

private final B minix;

public Goal(B minix) {
this.minix = minix;
}

@Override
public B getX() {
return minix;
}

@Override
public void doSomething() {
minix.getO();
}

}

关于java - 实现具有泛型和接口(interface)的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42609505/

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