Family polymorphism in Java
Family polymorphism是一種特殊的繼承架構,舉例
Graphy {Node [] nodes ; Edge [] edges; ...}
則稱Graphy含有Node與Edge的物件。
若我們創造一個WeightGraphy,其Edge要用WeightEdge extends Edge,則其constructor為
WeightGraphy(){nodes = new WeightNode[];edges = new WeightEdge[]; ...}
換句話說,WeightGraphy所用的Node與Edge會與其他類型的Graphy,例如UndirectionGraphy所用的Edge,Node皆不一樣,但是在Graphy的定義中無法顯現出這種差別,所以這就是Family polymorphism造成的問題。
那如何在Java 1.5支援Generic Type時解決這問題呢?
Graphy
這樣的話,WeightGraphy的定義可以寫成
WeightGraphy
對於family polymorphism的問題就可以迎刃而解了!
沒有留言:
張貼留言