loading...
Refactoring for Parameterizing Java Classes
Minneapolis, Minnesota May 20-May 26
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/ICSE.2007.7029th International Conference on Soft ...
 This Article 
 
PDF
HTML
 
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Adam Kiezun, MIT CS&AI Lab, USA
Michael D. Ernst, MIT CS&AI Lab, USA
Frank Tip, IBM T.J. Watson Research Center, USA
Robert M. Fuhrer, IBM T.J. Watson Research Center, USA
Type safety and expressiveness of many existing Java libraries and their client applications would improve, if the libraries were upgraded to define generic classes. Ef- ficient and accurate tools exist to assist client applications to use generic libraries, but so far the libraries themselves must be parameterized manually, which is a tedious, time-consuming, and error-prone task. We present a type-constraint- based algorithm for converting non-generic libraries to add type parameters. The algorithm handles the full Java language and preserves backward compatibility, thus making it safe for existing clients. Among other features, it is capable of inferring wildcard types and introducing type parameters for mutually-dependent classes. We have implemented the algorithm as a fully automatic refactoring in Eclipse.

We evaluated our work in two ways. First, our tool parameterized code that was lacking type parameters. We contacted the developers of several of these applications, and in all cases they confirmed that the resulting parameterizations were correct and useful. Second, to better quantify its effectiveness, our tool parameterized classes from already-generic libraries, and we compared the results to those that were created by the libraries' authors. Our tool performed the refactoring accurately.in 87% of cases the results were as good as those created manually by a human expert, in 9% of cases the tool results were better, and in 4% of cases the tool results were worse.

Citation:
Adam Kiezun, Michael D. Ernst, Frank Tip, Robert M. Fuhrer, "Refactoring for Parameterizing Java Classes," icse, pp.437-446, 29th International Conference on Software Engineering (ICSE'07), 2007
Usage of this product signifies your acceptance of the Terms of Use.