我有一個比較複雜的泛型(比如Map<Long,Map<Integer,String>>
),我在課堂上使用它。 (沒有外部可見性;它只是一個實現細節。)我想將它隱藏在typedef中,但Java沒有這樣的設施。是否有過「pseudo-typedef antipattern」的理由?
昨天我重新發現了下面的習語,很失望地得知它是considered an anti-pattern。
class MyClass
{
/* "Pseudo typedef" */
private static class FooBarMap extends HashMap<Long,Map<Integer,String>> { };
FooBarMap[] maps;
public FooBarMap getMapForType(int type)
{
// Actual code might be more complicated than this
return maps[type];
}
public String getDescription(int type, long fooId, int barId)
{
FooBarMap map = getMapForType(type);
return map.get(fooId).get(barId);
}
/* rest of code */
}
可我會有這方面的任何理由,當種類是隱藏的,沒有形成一個庫API的一部分(這在我的閱讀是戈茨的使用它主要反對)?
你稱這種泛型類型複雜?哈!當我是一個小夥子時,我們不得不在早上3點起牀,處理六級遞歸嵌套仿製藥... – 2009-08-07 08:40:39
Aye ...沒有鞋子...上山...在雪地裏.. – skaffman 2009-08-07 08:49:04
@Marcus Downing :在遞歸結束時,你在餐廳吃早餐的第七層。 ;-) – Mnementh 2009-08-07 10:36:41