2014-05-22 7 views
6

ho più metodi che restituiscono un java.lang.Integer, che viene poi convertito in modo implicito un Int utilizzando PREDEF conversioni implicite di Scala, ecco come è scritto there:Override conversioni implicite di PREDEF

implicit def Integer2int(x: java.lang.Integer): Int = x.intValue 

Questo conversione non è soddisfacente per me, vorrei qualcosa sulla falsariga di:

implicit def Integer2int(x: java.lang.Integer): Int = 
    Option(x).getOrElse(new Integer(0)).intValue 

come Integer a volte può essere null e in questo caso i rendimenti di conversione implicita di PREDEF NULL come bene e mi sarebbe l Ike per essere 0 invece.

Ho scritto la mia conversione ma continuo a ricevere errori dicendo che questa dichiarazione è ambigua dato che è già stata dichiarata in Predef.

La mia domanda è, esiste un modo per ignorare effettivamente le conversioni implicite di Predef?

risposta

7

È possibile disattivare il Predef importazione in questo modo:

import scala.Predef.{Integer2int => _} 

E poi basta ridefinire Integer2int come si desidera.

prova divertente: http://ideone.com/R7Zyfd

+3

Questo funziona bene, solo un'osservazione: Quando si esegue l'importazione all'interno di un oggetto, quello che hai suggerito opere, tuttavia, se avete bisogno di fare questo al di fuori di un oggetto, è necessario scrivere in questo modo: 'import scala.Predef. {Integer2int => _, _}' – Peter

+0

@Peter, hai ragione, questa è un'osservazione importante. – tkroman

Problemi correlati