Dim*_*ims 0 java generics recursion
有定义类的技术,包含一个方法,返回与类相同类型的值 - 自递归.
但是使用它,是否可以停止递归?
一些代码:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
如果不能停止递归,为什么呢?
如果没有逻辑原因无法阻止它,那么在下一版本的Java中添加此功能呢?
例如,ThisClass可以添加关键字或其他内容.
除了修复编译问题之外,我不是100%清楚问题是什么.您可以通过简单地将定义更改为Class4:
static class Class4<T> extends Class3<Class4<T>, T>
^^
Run Code Online (Sandbox Code Playgroud)
[ 实例 ]
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |