BCV09a (Article)
|
Author(s) | Lorenzo Bettini, Sara Capecchi and Betti Venneri |
Title | « Featherweight Java with Dynamic and StaticOverloading » |
Journal | Science of Computer Programming |
Volume | 74 |
Number | 5-6 |
Page(s) | 261-278 |
Year | 2009 |
Abstract |
We propose FMJ (Featherweight Multi Java), an extension of Featherweight Java with encapsulated multi-methods thus providing dynamic overloading. 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 and flexible mechanism which enhances re-usability and separation of responsibilities. However, many mainstream languages, such as, e.g., Java, do not provide it, resorting to only static overloading. The proposed extension is conservative and type safe: both ``message-not-understood'' and ``message-ambiguous'' are statically ruled out. Possible ambiguities are checked during type checking only on method invocation expressions, without requiring to inspect all the classes of a program. A static annotation with type information guarantees that in a well-typed program no ambiguity can raise at run-time. This annotation mechanism also permits modeling static overloading in a smooth way. Our core language can be used as the formal basis for an actual implementation of dynamic (and static) overloading in Java-like languages. |
@article{BCV09a,
number = {5-6},
volume = {74},
author = {Bettini, Lorenzo and Capecchi, Sara and Venneri, Betti},
title = {{Featherweight Java with Dynamic and StaticOverloading }},
abstract = {We propose FMJ (Featherweight Multi Java), an extension of
Featherweight Java with encapsulated multi-methods thus providing
dynamic overloading. 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 and flexible mechanism which enhances
re-usability and separation of responsibilities. However, many
mainstream languages, such as, e.g., Java, do not provide it,
resorting to only static overloading. The proposed extension is
conservative and type safe: both ``message-not-understood'' and
``message-ambiguous'' are statically ruled out. Possible
ambiguities are checked during type checking only on method
invocation expressions, without requiring to inspect all the
classes of a program. A static annotation with type information
guarantees that in a well-typed program no ambiguity can raise at
run-time. This annotation mechanism also permits modeling static
overloading in a smooth way. Our core language can be used as the
formal basis for an actual implementation of dynamic (and static)
overloading in Java-like languages.},
publisher = {Springer},
journal = {Science of Computer Programming},
year = {2009},
pages = {261-278},
}
This document was generated by bib2html 3.3.
(Modified by Luca Paolini, under the GNU General Public License)