0
有一種技術來定義類,其中包含一個方法,返回一個與class - self遞歸類型相同的值。如何停止Java泛型中的自我遞歸?
但是使用這個,是否有可能停止遞歸?
一些代碼:
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
什麼的。
你可以發佈你聲稱存在此遞歸技術的實際例子嗎?我有一種感覺,你在這裏展示的例子忽略了這一點。 – markspace
'(自己)這個'演員是不安全的。 'Self'被宣佈爲擴展'Class1',但'This'(類型'Class1 ')不一定是'Self'。 –
newacct