Metody rozszerzania C# są świetne do dodawania cukru syntaktycznego. Metody rozszerzania Java są świetne, aby umożliwić programistom bibliotek dodawanie metod do ich interfejsów.Czy Java ma sposób, aby programiści spoza biblioteki mogli używać metod rozszerzeń?
Jestem nie-bibliotecznym programistą Java i wiem, że będę czerpał wiele korzyści z pozyskiwania nowych funkcji z bibliotek, ale nadal chciałbym mieć możliwości syntaktycznego cukru metodami C#.
Czy to możliwe, czy będzie to możliwe w przyszłych wersjach Javy?
np: Chciałbym dodać metody do klasy String ...
String data = StringUtils.capitalize("abcd"); // instead of this
String data = "abcd".capitalize() // I would like to do this
proszę nie koncentrują się na tym konkretnym przykładzie, ja tylko pokazuje klasę funkcjonalności Chcę, aby móc osiągać.
Java nie ma mechanizmu "śmiertelników" dla rozszerzonych zajęć w ten sposób. Istnieje kilka sztuczek, które można grać za pomocą niektórych narzędzi do debugowania, ale nie są one przeznaczone do użycia poza scenariuszem debugowania. –
Należy zauważyć, że ogólnie nie ma twardej granicy pomiędzy "programistami bibliotek" i "programistami aplikacji" (przynajmniej w świecie Java). Jeśli dana funkcja jest dostępna dla bibliotek, może być również używana w aplikacjach. To prawda, złożoność niektórych funkcji sprawia, że jest ona bardziej przydatna w bibliotekach. Na przykład: * pisanie * Interfejsy API, które dobrze wykorzystują generyczne w złożonych scenariuszach, są bardzo trudne, więc zwykle odbywa się to tylko w bibliotekach (wielokrotnego użytku). * używanie * takich interfejsów API jest znacznie łatwiejsze (jeśli interfejsy API są dobrze zaprojektowane). –