I metodi di estensione di C# sono ottimi per aggiungere zucchero sintattico. I metodi di estensione Java sono ottimi per consentire agli sviluppatori di librerie di aggiungere metodi alle loro interfacce.Java ha un modo per gli sviluppatori non di libreria di utilizzare i metodi di estensione?
Sono uno sviluppatore Java non librerie e so che otterrò molti vantaggi dall'acquisizione di nuove funzionalità dalle librerie, ma mi piacerebbe comunque avere le capacità sintattiche di estensione dei metodi di estensione C#.
È questo o sarà possibile nelle versioni future di Java?
esempio: Vorrei aggiungere metodi alla classe String ...
String data = StringUtils.capitalize("abcd"); // instead of this
String data = "abcd".capitalize() // I would like to do this
Si prega di non concentrarsi su questo particolare esempio, sto mostrando solo la classe di funzionalità che voglio essere in grado di raggiungere.
Java non ha un meccanismo per "mortali" per le classi estese in questo modo. Ci sono alcuni trucchi che possono essere giocati con alcuni strumenti di debug, ma non sono pensati per l'uso al di fuori di uno scenario di debug. –
Si noti che in generale non esiste un confine rigido tra "sviluppatori di librerie" e "sviluppatori di applicazioni" (almeno nel mondo Java). Se una determinata funzione è disponibile per le librerie, può essere utilizzata anche nelle applicazioni. Certo, la complessità di alcune funzionalità rende più probabile l'utilizzo nelle librerie. Ad esempio: * scrivere * API che fanno buon uso di generici in scenari complessi è molto difficile, quindi di solito è fatto solo in librerie (riutilizzabili). * usare * tali API è molto più semplice (se le API sono ben progettate). –