I might be wrong, but I believe the purpose of the type parameter is not to make java code better but to make the modeler better. With a type parameter it is impossible that by accident (or copy-pasting) you pass an object of the incorrect type to the java action.
IOP proxies are only meant to be used with objects that have a fixed type i.e. no type parameter. If you have a type parameter you should stick to using the mendix objects such as IMendixObject-which represents an object and IMetaObject - which represents an entity. You can find a lot of info here https://apidocs.mendix.com/7/runtime/
For me, the most usefull functions are
Hope this helps,