Mam klasę A<X, Y>
i chcę ją zmienić na A<Y, X>
w taki sposób, że wszystkie odniesienia do niej również zostaną zmodyfikowane.Jak odwrotne parametry typów w Javie
Odpowiedz
Nie sądzę, że został wprowadzony w Eclipse jeszcze parametrów. Jest to raczej rzadkie refaktoryzacji, choć ...
Ale jeśli hierarchia typ poniżej A
nie jest zbyt skomplikowane, ale spróbuj użyć tego regex-search-replace (gdzie A|B|C
oznacza A
i wszystkie podtypy A
, np B
i C
):
\b(A|B|C)<\s*(\w+)\s*,\s*(\w+)\s*>
zmiana: ponieważ chcesz, aby dopasować bardziej wyrafinowane rzeczy, spróbuj tego (bez sztucznych łamanie wierszy):
\b(A|B|C)<
\s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*,
\s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*>
zastąpić
$1<$3, $2>
Ponieważ używasz Eclipse, można ręcznie sprawdzić każde zastępstwo za poprawność
Byłoby mi dobrze, aby włączyć opcję słowa kluczowego 'extends' w regex search/replace –
True! Zaktualizuję twój szalony regex ;-) –
PS: Nie obwiniaj mnie, jeśli to działa przez 1/2h, choć ... ;-) –
W Eclipse prawym przyciskiem myszy na metodzie, następnie Refactor-> podpis Zmień sposób, można zmienić kolejność tam
OP pyta o przełączanie ogólnych parametrów typu klasy, a nie parametrów metody –
To nie jest metoda, to deklaracja klasy. –
Och, mój błąd, źle przeczytałem pytanie. W tym przypadku nie sądzę, że Eclipse ma cokolwiek zaimplementowane – jasalguero
Jeśli nie używasz Eclipse (lub innego narzędzia, które ma dobrą refaktoryzacji - wysoce zalecane, jeśli nie są), wtedy mogę wymyślić dwa sposoby, aby to zrobić:
Po pierwsze: Jeśli używasz TDD, napisz test, który zakończy się sukcesem tylko wtedy, gdy zmienne zostaną poprawnie zamienione. Następnie wprowadź zmianę w metodzie podpisu i upewnij się, że test się powiódł.
drugie: 1. Zdjąć 2nd parametr z podpisem metoda, która rzuci błędów kompilacji na wszystkich połączeń do tej metody 2. Przejdź do każdej z linii, które są upadających kompilację i ostrożnie zamienić zmienne 3 . Włóż 2nd zmienną z powrotem do podpisu metody w nowym, odwrócona kolejność 4. Uruchom kilka testów aby upewnić się, że nadal działa tak, jak oczekują go
druga metoda jest oczywiście brzydkie. Ale jeśli nie korzystasz z IDE z dobrym wsparciem refaktoryzacji, błędy kompilacji są dobrym sposobem na uchwycenie 100% wywołań tej metody (przynajmniej w twoim projekcie). Jeśli piszesz bibliotekę kodów, która jest używana przez inne osoby lub przez inne programy, znacznie trudniej jest zakomunikować tę zmianę wszystkim zainteresowanym stronom.
Nawet 'vi' zna wyrażenia regularne! ;-) –
... ale dobrych punktów, w przeciwnym razie –
- 1. rodzaju typów w Javie
- 2. Jak używać długich typów danych w Javie?
- 3. Polimorficzne parametry typów w kolekcjach ogólnych
- 4. Czy Parametry metody wątek bezpieczne w Javie?
- 5. Parametry spoczynkowe WCF dotyczące typów złożonych
- 6. Jak wykonać dane sumaryczne, krzyżowe, różnicowe i odwrotne w java
- 7. Głębokie odwrotne zagnieżdżonych list w Scala
- 8. odwrotne debugowanie z lldd
- 9. odwrotne rodziny injective typu
- 10. RxSwift - Odbijanie/blokowanie "odwrotne"
- 11. Git: Ignorowanie odwrotne (.gitignore)
- 12. Jak utworzyć sprzężenie odwrotne dla relacji jednokierunkowej?
- 13. Utwórz funkcję C, która akceptuje parametry różnych typów danych
- 14. C#: Ograniczanie typów parametrów metody (nie parametry ogólne)
- 15. Django Rest Framework - odwrotne relacje
- 16. Matlab - odwrotne wartości osi polarnego
- 17. Opcja niedostępna w usb - kitkat - odwrotne tethering
- 18. Jak interpretować echo odwrotne ukośniki odwrotne, a nie drukować końcowy znak nowej linii?
- 19. Django odwrotne wyszukiwanie kluczy zagranicznych
- 20. Routing URL w Javie
- 21. PHP i odwrotne ukośniki w ciągach znaków
- 22. Zapytanie o odwrotne relacje w semantycznej MediaWiki
- 23. Wyszukiwanie odwrotne Django przez ForeignKey
- 24. Jak normalizować URL w Javie?
- 25. Deserializacja enum w Javie
- 26. Porównanie różnych typów w szablonie
- 27. C-jak enum w Javie
- 28. Jak odróżnić parametry zapytań od ścieżki Parametry
- 29. Jak wyświetlić parametry w zapytaniu?
- 30. Parsowanie schematu XSD za pomocą XSOM w Javie. Jak uzyskać dostęp do typów elementów i złożonych
Przepraszam za literówkę, tak, chcę "A' –