Don't quite follow but here's a shot...
If the ArrayList does not have a VO object it will throw a cast class exception. If it does have a VO object (or null), nothing about the object will change, it will just not be referencable from the "vo" pointer. If you were to use an Object pointer, the object would still be the same, but the methods of the SomeVo class would be hidden since as a pointer,
java does believe you have access to these methods without a cast (or reflection).