2017-08-24 64 views
-1

奇異遞歸模板模式是吉姆·科普連的名字一個通用基礎類,它的實際泛型參數是一個派生類:OOP命名法:在好奇的循環模板模式中完整類型名稱的名稱是什麼?

class Base<T> { ... } 
class Derived: public Base<Derived> { ... } 

或者在Java中,例如,可比較和枚舉:

class Foo implements Comparable<Foo> { ... } 
//or 
enum Bar { ... } // which is actually Bar extends Enum<Bar> 

現在,這些類別的類型名稱依次爲DerivedFooBar

但是我們怎麼叫也指定派生的東西,那就是「派生是,一個衍生的基礎< >」,「富實現可比<富>」,「酒吧擴展Enum <酒吧>」。這不是類型名稱,這是更多。

但是,對於那個typename-plus-derivation-name,單詞是什麼?

回答

1

這是F-bound多態性。在F-界是約束:

interface I<A extends I<A>> 
//   ^----------^ 

並出現在亞型

class C extends I<C> 
1

在Java中,它給在language spec

給定一個(可能是通用)類聲明C<F1,...,Fn>(n ≥ 0, C ≠ Object),直接超類類類型C<F1,...,Fn>是在擴展子句中給出的類型C的聲明是否存在擴展子句,否則爲Object

給定一個(可能是通用)類聲明C<F1,...,Fn>(n ≥ 0, C ≠ Object),所述直接超接口類型的C<F1,...,Fn>C聲明的implements子句中給出的類型的,如果實現條款存在。

所以,它只是被稱爲直接超類或直接超接口。沒有特別的名字,因爲它「奇怪地反覆出現」。