1. A method, in a data processing system, for instantiating an abstract class, comprising: providing mapping metadata for mapping an abstract class to a corresponding concrete class implementing the abstract class; automatically scanning through classes in the application code to identify instantiation statements; encountering an instantiation statement for the abstract class during processing of application code, wherein the instantiation statement does not specify a concrete class implementing the abstract class; and converting the encountered instantiation statement to specify the concrete class implementing the abstract class based on the mapping metadata, wherein: the mapping metadata is provided as annotations within the application code, the annotations are provided at one of a class-level, a method-level, a declaration-level, or a package-level, an annotation provided at a class-level is applied to all statements in the class, an annotation provided at a method-level is applied to only an associated method, an annotation provided at a package-level is applied to all classes in the package, and annotations at a lower level of abstraction supersede annotations at a higher level of abstraction.