Type Variability and Completeness of Interfaces in Java Applications
Hani Abdeen, Osama Shata

TL;DR
This paper analyzes how interfaces are used in Java applications, focusing on their variability across class hierarchies and their completeness as partial types, revealing insights into their design patterns.
Contribution
It provides an empirical study on the variability and completeness of interfaces in Java, highlighting their diverse roles and usage patterns.
Findings
Interfaces often serve as partial types for specific aspects.
High variability in interface usage across different class hierarchies.
Interfaces are frequently used to enable multiple inheritance.
Abstract
Interfaces are widely used as central design elements of Java applications. Although interfaces are abstract types similar to abstract classes, the usage of interfaces in Java applications may considerably differ from the usage of abstract classes. Unlike abstract classes, interfaces are meant to enable multiple inheritance in Java programs. Hence, interfaces are meant to encode shared similarities between classes belonging to different class-type hierarchies. Therefore, it is frequent to use interfaces as partial types, where an interface specifies one specific aspect or usage of its implementing classes. In this paper, we investigate interfaces' usage in Java applications from two perspectives. First, we investigate the usage of interfaces as types of classes belonging to different class-type hierarchies (i.e., interface's type variability). Second, we investigate the usage of…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Advanced Software Engineering Methodologies · Logic, programming, and type systems
