gpt4 book ai didi

java - 如何停止Java泛型中的自递归?

转载 作者:行者123 更新时间:2023-12-01 16:51:27 25 4
gpt4 key购买 nike

有一种技术可以定义类,包含一个方法,返回与类相同类型的值——自递归。

但是使用这个,是否可以停止递归?

一些代码:

public class StopSelfRecursion {

// base class
static class Class1<Self extends Class1<Self,T>, T> {
public Self getMyself() {
return (Self) this;
}
}

// derived 1
static class Class2<Self extends Class2<Self, T>, T> extends Class1<Self, T> {
}

// derived 2
static class Class3<Self extends Class2<Self, T>, T> extends Class2<Self, T> {
}

// want to stop recursion; want Class4 has only one parameter
static class Class4<T> extends Class3<Class3, T> {
}

public static void main(String[] args) {

Class1<?, Integer> v1 = new Class1<>();

Class2<?, Integer> v2 = new Class2<>();

Class3<?, Integer> v3 = new Class3<>();

System.out.println(v1.toString());
System.out.println(v2.toString());
System.out.println(v3.toString());


}
}

如果无法停止递归,那么为什么?

如果没有逻辑原因无法阻止它,那么在 Java 的下一个版本中添加此功能怎么样?

例如可以添加关键字ThisClass什么的。

最佳答案

除了修复编译问题之外,我并不 100% 清楚问题是什么。您只需将 Class4 的定义更改为:

static class Class4<T> extends Class3<Class4<T>, T>
^^

[ Live example ]

关于java - 如何停止Java泛型中的自递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39335430/

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