I like the idea, however it has obvious downsides. First, if a user class contains a collection, we force user to implement additional interface, even if the collection is a simple ArrayList. Second, I do not see how this plain collection can be the value for the cache - user will always need to write a wrapper/containing class around it.
I think we should provide minimum support for basic types - HashMap, LinkedHashMap, ArrayList and treat other classes the way Vladimir described.