I see problems with both the current code and your proposed fix.
The current code fails for the declaration below, because it will try to assign a HashMap to a Hashtable.
The proposed fix actually makes things worse because the following declaration is the common case. Class.newInstance() fails for interfaces.
The definitive solution should address both scenarios. I'll reopen the issue and add this comment.
I agree both scanarios should be addressed. Addressing the interface issue is not hard as we can do
However this leaves two problems. Both are not common. use cases.
1. Abstract classes which if someone uses it is imposible to get it to work, since it will fail on 'Field.set'.
2. Another problem is when a user uses his own sub interface.
I think the code should address the first two issues and state in the documentation not to use abstract classes or sub interfaces of Collection, Set, List and Map for field mapping. (Maybe add an clear exception message)
look in the jira, I think Alex already has a solution there