Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications 2004
DOI: 10.1145/1028976.1028978
|View full text |Cite
|
Sign up to set email alerts
|

Converting Java classes to use generics

Abstract: Generics offer significant software engineering benefits since they provide code reuse without compromising type safety. Thus generics will be added to the Java language in the next release. While this extension to Java will help programmers when they are writing new code, it will not help legacy code unless it is rewritten to use generics. In our experience, manually modifying existing programs to use generics is complex and can be error prone and labor intensive. We describe a system, Ilwith, that (i) conver… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
6
0
1

Year Published

2005
2005
2016
2016

Publication Types

Select...
4
3
1

Relationship

0
8

Authors

Journals

citations
Cited by 26 publications
(7 citation statements)
references
References 15 publications
(2 reference statements)
0
6
0
1
Order By: Relevance
“…This takes place in two steps: with reverse generics a brand new generic version is obtained starting from existing code; then, by instantiating generic classes, the generic code is adapted and reused in a new context. There seem to be similarities among reverse generics and some refactoring approaches: however, the intent of reverse generics is not to perform reverse engineering or refactoring of existing code, (see, e.g., (Duggan, 1999;von Dincklage and Diwan, 2004;Kiezun et al, 2007)) but to extrapolate possible generic "template" code from existing one, and reuse it for generating new code. Note that this programming methodology will permit modifying only the original existing code, and then, automatically, spread the modifications to the one obtained by reverse generics.…”
Section: Related Workmentioning
confidence: 99%
“…This takes place in two steps: with reverse generics a brand new generic version is obtained starting from existing code; then, by instantiating generic classes, the generic code is adapted and reused in a new context. There seem to be similarities among reverse generics and some refactoring approaches: however, the intent of reverse generics is not to perform reverse engineering or refactoring of existing code, (see, e.g., (Duggan, 1999;von Dincklage and Diwan, 2004;Kiezun et al, 2007)) but to extrapolate possible generic "template" code from existing one, and reuse it for generating new code. Note that this programming methodology will permit modifying only the original existing code, and then, automatically, spread the modifications to the one obtained by reverse generics.…”
Section: Related Workmentioning
confidence: 99%
“…Our approach fully supports Java 1.5 generics, including bounded and unbounded wildcards, and it has been implemented as a refactoring in Eclipse. Previous approaches for solving the parameterization problem [9,7,22] did not include a practical implementation, and produced incorrect or suboptimal results, as will be discussed in Section 5.…”
Section: Once a Class Has Been Parameterized The Instantiation Problemmentioning
confidence: 99%
“…Our algorithm and implementation fully support parameterization in the presence of generic methods, e.g., those in java.util.Collections but we have not yet implemented adding type parameters to methods. (Von Dincklage and Diwan used heuristics to handle generic methods [22]-such heuristics may also be applicable to our work. In previous work, we used a contextsensitive version of the generic instantiation algorithm to parameterize methods [11].…”
Section: Miscellaneous Issuesmentioning
confidence: 99%
See 1 more Smart Citation
“…Refactoring [16] is a process in which code is restructured to improve software design and safety features while preserving the original program semantics. Refactoring tools typically automatically assist developers with a range of software evolution and maintenance tasks, including migrating source code to a new platform version [6,10,11,13,20,23] or to make use of more desirable paradigms for performance improvements [4], translating existing code to a new platform [3,12,24], and restructuring code to reflect a superior design philosophy [5,9,14].…”
Section: Introductionmentioning
confidence: 99%