Android API Design – Why Bundle API Accepts ArrayLists

androidandroid-developmentapi-designjava

I'm new to Android and while going through a tutorial on saving Activity state to a Bundle, I noticed that instead of accepting the more generic List interface, Bundle's put methods are expecting ArrayLists.

Example:

Bundle.putCharSequenceArrayList(key, value)
Bundle.putIntegerArrayList(key, value)
Bundle.putParcelableArrayList(key, value)
Bundle.putStringArrayList(key, value)

Most of us are familiar with item 52 of Effective Java suggesting that objects must be refered to by their interface, so I am wondering what was the reason behind this API decision.

Is ArrayList perhaps the preferred list implementation in Android?

Best Answer

Just a guess: Maybe Bundele-content must be be serializable and not every Lists implementation is serializable.

From sdk-doc public Bundle.Bundle (ClassLoader)

  Constructs a new, empty Bundle that uses a specific 
  ClassLoader for instantiating Parcelable and Serializable objects.