I would say that 1 is preferred, unless
- you are depending on the implementation of optional behavior* in ArrayList, in that case explicitly using ArrayList is more clear
- You will be using the ArrayList in a method call which requires ArrayList, possibly for optional behavior or performance characteristics
My guess is that in 99% of the cases you can get by with List, which is preferred.
- for instance
removeAll
, or add(null)