Sono stufo di encapsuling ogni chiamata di asType
con try/catch
blocco come:Come sovraccaricare alcune conversioni di tipo Groovy per evitare tentativi/catture di NumberFormatException?
def b = ""
def c
try {
c = b as Integer
}
catch (NumberFormatException) {
c = null
}
println c
invece vorrei scrivere nel mio codice seguente:
def b = ""
def c = b as Integer
e se b
non è ben formattato , quindi voglio assegnare null
a c
Quindi, come posso sovraccaricare questo comportamento predefinito perOperatore?
È rischioso farlo per la mia intera applicazione Grails? O è la soluzione migliore per creare semplicemente un metodo personale (come asTypeSafe
) e chiamarlo? Groovy/Grails ha alcune modifiche alla configurazione riguardanti la conversione del tipo Groovy?
EDIT (per le persone interessate nella risposta implementato) Sulla base della risposta accettata, ho aggiunto il seguente codice al mio file bootstrap.groovy e funziona perfettamente.
String.metaClass.asTypeSafe = {Class c ->
try {
delegate.asType(c)
}
catch (Exception) {
return null
}
}
ed io lo chiamo come di seguito:
def myNum = myStr.asTypeSafe(Integer)
Thx! Questo è esattamente ciò di cui avevo bisogno. Potrei davvero aggiungere un nuovo metodo alla classe String (come "asTypeSafe") invece di sovrascrivere asType per il tuo suggerimento. Inoltre, dove scrivi e chiami questo tipo di codice in un'applicazione Grails? In bootstap? – fabien7474
Sì, il bootstrap sarebbe il posto giusto. – ataylor