What exactly is your question? Is it about what's happening on line 11? That's a cast. It doesn't actually change the type of the object, but it changes the type of the reference. Without that cast, you couldn't assign the results to a MyClass variable - the compiler would prevent it. Using the cast is telling the compiler "I know that elementAt says it's returning an Object, but I know it's really returning a MyClass, so treat it like that". The JVM then throws an exception at runtime if that isn't actually true.
Using generic collections (e.g an ArrayList<MyClass>) avoids this.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com