Jestem chory kapsułkowania każde wezwanie asType
z try/catch
blok jak:Jak przeładować konwersję typu Groovy w celu uniknięcia próby/przechwycenia wyjątku NumberFormatException?
def b = ""
def c
try {
c = b as Integer
}
catch (NumberFormatException) {
c = null
}
println c
zamiast chciałbym napisać w moim kodu, co następuje:
def b = ""
def c = b as Integer
a jeśli b
nie jest dobrze sformatowany , następnie chcę mieć null
przypisane do c
Jak mogę przeciążać to domyślne zachowanie dlaOperator?
Czy to ryzykowne, jeśli zrobię to dla całej aplikacji Grails? Czy jest to najlepsze rozwiązanie, aby po prostu utworzyć własną metodę (np. asTypeSafe
) i nazwać ją? Czy Groovy/Grails ma kilka poprawek konfiguracyjnych dotyczących konwersji Groovy Type?
EDIT (dla osób zainteresowanych wdrożonego odpowiedź) podstawie zaakceptowanych odpowiedzi Dodałem następujący kod do mojego pliku bootstrap.groovy i działa idealnie.
String.metaClass.asTypeSafe = {Class c ->
try {
delegate.asType(c)
}
catch (Exception) {
return null
}
}
i wzywam go jak poniżej:
def myNum = myStr.asTypeSafe(Integer)
Thx! Dokładnie tego potrzebowałem. Naprawdę mogę dodać nową metodę do klasy String (np. "AsTypeSafe") zamiast przesłonić asType za Twoją sugestią. Ponadto, gdzie piszesz i nazywasz ten rodzaj kodu w aplikacji Grails? W bootstapie? – fabien7474
Tak, bootstrap byłby właściwym miejscem. – ataylor