See the documentation of [java.util.Collections.reverse()](http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#reverse%28java.util.List%29).

I don't understand how Java methods can only pass by value, but yet the following is allowed:

```
public static void reverse(List<?> list)

```

How can it change the original object passed through the parameter? Especially when all objects passed through parameters are passed by value? Shouldn't that mean that only a copy of the object is passed through, and therefore only a reference could be returned? Since we're returning void, how can we change the original object being passed through?

* A very confused Java Padawan