Publications and Research

Document Type


Publication Date

Spring 5-20-2017


Java 8 introduces enhanced interfaces, allowing for default (instance) methods that implementers will inherit if none are provided [3]. Default methods can be used [2] as a replacement of the skeletal implementation pattern [1], which creates abstract skeletal implementation classes that implementers extend. Migrating legacy code using the skeletal implementation pattern to instead use default methods can require significant manual effort due to subtle language and semantic restrictions. It requires preserving typecorrectness by analyzing complex type hierarchies, resolving issues arising from multiple inheritance, reconciling differences between class and interface methods, and ensuring tie-breakers with overriding class methods do not alter semantics.

We propose an efficient, fully-automated, semantics- preserving refactoring approach, based on type constraints [4,5] and implemented as an open source Eclipse plug-in, that assists developers in taking advantage of enhanced interfaces. It identifies instances of the pattern and safely migrates class method implementations to interfaces as default methods.


This poster was presented at the 2017 International Conference on Software Engineering (ICSE) in Buenos Aires, Argentina.



To view the content in your browser, please download Adobe Reader or, alternately,
you may Download the file to your hard drive.

NOTE: The latest versions of Adobe Reader do not support viewing PDF files within Firefox on Mac OS and if you are using a modern (Intel) Mac, there is no official plugin for viewing PDF files within the browser window.