Abstract |
Multi-methods (collections of overloaded methods associated to the same message, whose selection takes place dynamically instead of statically as in standard overloading) are a useful mechanism since they unleash the power of dynamic binding in object-oriented languages, so enhancing re-usability and separation of responsibilities. However, many mainstream languages, such as, e.g., Java, do not provide it, resorting to only static overloading. In this paper we propose an extension, we call FMJ (Featherweight Multi Java), of Featherweight Java with encapsulated multi-methods thus providing dynamic overloading. The extension is conservative and type safe: both ``message-not-understood'' and ``message-ambiguous'' are statically ruled out. Our core language can be used as the formal basis for an actual implementation of dynamic overloading in Java-like languages. |
@inproceedings{BCV07,
volume = {272},
author = {Bettini, Lorenzo and Capecchi, Sara and Venneri, Betti},
booktitle = {Proc. of PPPJ, Principles and Practice of Programming in Java},
url = {http://rap.dsi.unifi.it/~bettini/bibliography/files/multifj.pdf},
title = {{Featherweight Java with Multi-Methods}},
abstract = { Multi-methods (collections of overloaded methods associated to
the same message, whose selection takes place dynamically instead
of statically as in standard overloading) are a useful mechanism
since they unleash the power of dynamic binding in object-oriented
languages, so enhancing re-usability and separation of
responsibilities. However, many mainstream languages, such as,
e.g., Java, do not provide it, resorting to only static
overloading. In this paper we propose an extension, we call FMJ
(Featherweight Multi Java), of Featherweight Java with
encapsulated multi-methods thus providing dynamic overloading. The
extension is conservative and type safe: both
``message-not-understood'' and ``message-ambiguous'' are
statically ruled out. Our core language can be used as the formal
basis for an actual implementation of dynamic overloading in
Java-like languages.},
publisher = {ACM Press},
pages = {83-92},
year = {2007},
}
This document was generated by bib2html 3.3.
(Modified by Luca Paolini, under the GNU General Public License)
