Question: The method [`Arrays.asList(<T>...A)`](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)) returns a [`List`](http://docs.oracle.com/javase/7/docs/api/java/util/List.html) representation of `A`. 
The returned object here is a [`List`](http://docs.oracle.com/javase/7/docs/api/java/util/List.html) backed by an array, but is not an `ArrayList` object. 

I'm looking for the differences between the object [`Arrays.asList()`](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)) returns and an [`ArrayList`](http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) object-- a quick source to tell these without diving into the code. 

TIA.

Answer: 
When you call Arrays.asList it does not return a `java.util.ArrayList`. It returns a `java.util.Arrays$ArrayList` which is a fixed size list backed by the original source array. In other words, it is a view for the array exposed with Java's collection-based APIs. 

```
    String[] sourceArr = {"A", "B", "C"};
    List<String> list = Arrays.asList(sourceArr);
    System.out.println(list); // [A, B, C]

    sourceArr[2] = ""; // changing source array changes the exposed view List
    System.out.println(list); //[A, B, ]

    list.set(0, "Z"); // Setting an element within the size of the source array
    System.out.println(Arrays.toString(sourceArr)); //[Z, B, ]

    list.set(3, "Z"); // java.lang.ArrayIndexOutOfBoundsException
    System.out.println(Arrays.toString(sourceArr));

    list.add("X"); //java.lang.UnsupportedOperationException

    list.remove("Z"); //java.lang.UnsupportedOperationException

```

You cannot add elements to it and you cannot remove elements from it. If you try to add or remove elements from them you will get `UnsupportedOperationException`.
I'll expand my comment a little bit.

One problem that can occur if you use `asList` as it wasn't different from `ArrayList` object:

```
List<Object> list = Array.asList(array) ;
list.remove(0); // UnsupportedOperationException :(

```

Here you cannot remove the 0 element because `asList` returns a **fixed-size list backed by the specified array**. So you should do something like:

```
List<Object> newList = new ArrayList<>(Arrays.asList(array));

```

in order to make the `newList` modifiable.