Static type inference for parametric classes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Object-oriented type systems
Program generalization for software reuse: from C to C++
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Modular type-based reverse engineering of parameterized types in Java code
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java Language Specification
The Java Language Specification
Sifting out the mud: low level C++ code reuse
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Typing constraint logic programs
Theory and Practice of Logic Programming
Converting Java classes to use generics
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Converting java programs to use generic libraries
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Decoupling classes with inferred interfaces
Proceedings of the 2006 ACM symposium on Applied computing
Efficiently refactoring java applications to use generic libraries
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Systematically refactoring inheritance to delegation in java
Proceedings of the 30th international conference on Software engineering
Controlled adaptation-oriented evolution of object-oriented components
SE '08 Proceedings of the IASTED International Conference on Software Engineering
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Correct refactoring of concurrent java code
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Refactoring using type constraints
ACM Transactions on Programming Languages and Systems (TOPLAS)
Refactoring pipe-like mashups for end-user programmers
Proceedings of the 33rd International Conference on Software Engineering
Taming the wildcards: combining definition- and use-site variance
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
A refactoring constraint language and its application to eiffel
Proceedings of the 25th European conference on Object-oriented programming
Tunable static inference for generic universe types
Proceedings of the 25th European conference on Object-oriented programming
Build code analysis with symbolic evaluation
Proceedings of the 34th International Conference on Software Engineering
Inference and checking of object ownership
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Constraint-Based refactoring with foresight
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Refactoring using type constraints
SAS'07 Proceedings of the 14th international conference on Static Analysis
Inference rules for generic code migration of aspect-oriented programs
Science of Computer Programming
Refactoring Flash Embedding Methods
International Journal of Systems and Service-Oriented Engineering
Hi-index | 0.00 |
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.