Recentemente, ho imparato un po 'più di C ++ e i pericoli e gli usi dell'overloading dell'operatore, e il miglioramento della leggibilità che fornisce ai tipi aritmetici (come i numeri complessi).
Qualche tempo fa, stavo giocando con Rust, e mi piaceva molto il modo in cui gestivano il sovraccarico dell'operatore, cioè tramite Tratti nella cassa std::ops
. Quindi, avendo:
struct Fraction {
numerator: i32,
denominator: i32,
}
impl Add for Fraction { /* ... */ }
Termina sovraccarico dell'operatore +
. Questo mi porta a chiedermi l'argomento del titolo ...
È possibile che Java implementi un numero limitato di overload degli operatori tramite interfacce? Il compilatore può verificare se la classe del chiamante implementa l'interfaccia per un determinato operatore e cambiare l'operatore in una chiamata al metodo (quindi, essendo tutto sintassi zucchero) o non riuscendo a compilare altrimenti.
Questo implicherebbe la rottura delle modifiche per il codice compilato nelle versioni precedenti? Qualcuno sa se questo è già stato discusso nella mailing list o un JEP proposto?