我們怎樣才能限制ArrayList的一個specfic類型的對象只接受之前,通用我怎樣才能限制ArrayList中只接受之前,通用
-1
A
回答
2
一個specfic類型的對象編寫只接受允許的包裝功能鍵入並隱藏集合。這是Java-5之前的標準最佳實踐。
private final List strings = new ArrayList();
public void add(String s)
{
strings.add(s);
}
public String remove(String s)
{
return (String) strings.remove(s);
}
// etc...
是的,這很糟糕。
我可以問一下:有沒有你不使用泛型的原因?他們是字節碼與Java 1.4兼容
1
兩個選項,(我假設C#在這裏,但都適用於幾乎所有的OO語言)。
1)從集合類型的選擇(或它的接口繼承),重寫所有的方法來扔在錯誤的異常類型,像這樣:
public class MyType
{
// Your type here
}
public class MyTypeCollection : ArrayList
{
public override int Add(object value)
{
if (!(value is MyType))
{
throw new ArgumentException("value must be of type MyType");
}
return base.Add(value);
}
public int Add(MyType myType)
{
return base.Add(myType);
}
// Other overrides here
}
或 2)(可能更好),創建自己的類型,並實現接口作爲集合所需的接口,並在內部使用非通用的非類型集合。類似這樣的:
public class MyTypeCollection2 : IEnumerable
{
private readonly ArrayList _myList = new ArrayList();
public void Add(MyType myType)
{
_myList.Add(myType);
}
// Other collection methods
public IEnumerator GetEnumerator()
{
yield return _myList.Cast<MyType>();
}
}
確保實現您將關心的所有接口。在.NET框架中爲ArrayList實現的接口是:IList,ICloneable
希望這有助於。
相關問題
- 1. 我們怎樣才能之前在javascript
- 2. 我怎樣才能限制Java泛型
- 3. 我怎樣才能申報科特林接受(只)枚舉
- 4. 我怎樣才能複製使用
- 5. 我怎樣才能進去界限
- 6. 我怎樣才能在標籤xml之前和之後
- 7. 我怎樣才能
- 8. 我怎樣才能
- 9. 我怎樣才能
- 10. 我怎樣才能
- 11. 我怎樣才能控制器功能
- 12. 我怎樣才能用ajax
- 13. 我怎樣才能用jQuery
- 14. 我怎樣才能UIToolbar當前視圖
- 15. 我怎樣才能限制在JBoss併發用戶數4.0.4
- 16. 我怎樣才能限制我的文字只有200個字符?
- 17. 我怎樣才能限制在SharePoint 2010中,任何教程
- 18. 在ggplot2中,我怎樣才能限制geom_hline的範圍?
- 19. 我怎樣才能只接受整數輸入沒有嘗試趕上爪哇
- 20. C#:我怎樣才能讓textarea只接受一些特定的單詞?
- 21. 我怎樣才能給JavaScript的附加功能的限制?
- 22. 我怎樣才能得到isalnum()正確接受字符串
- 23. 我怎樣才能使它接受浮動ponit數
- 24. 我怎樣才能接受和發送餅乾與機械化?
- 25. 我怎樣才能只接收目前可以使用的計算機名稱?
- 26. 我怎樣才能限制對我的文件的訪問
- 27. 我怎樣才能通過隨機
- 28. 我怎樣才能通過零
- 29. 我怎樣才能通過Java
- 30. 我怎樣才能從Swing溝通Servlet
該應用程序是一個非常古老的遺留系統,所以不知道它是否用java寫的1.4 – Pragya