2012-12-21 15 views
9

In C# Mi è piaciuto usare la classe Convert. Ha reso la conversione da un tipo all'altro facile e coerente. Stavo pensando di scrivere una classe simile in Java, ma non voglio reinventare la ruota. Così ho cercato su Google per vedere se una cosa del genere esiste e non stava ottenendo buoni risultati. Quindi qualcuno è a conoscenza di qualcosa di simile nelle librerie standard, google guava o apache commons?In Java esiste un equivalente della classe Convert da C#?

+0

Sto solo andando a commentare che la creazione di una classe wrapper come questo è completamente inutile per java ... – Brendan

risposta

7

Non esiste una classe come questa in java.

La pratica accettata in Java è di lanciare i primitivi l'uno con l'altro. Questo è un modo semplice e coerente per convertire da un tipo all'altro.

float bar = 4.0f; 
int foo = (int) bar; 
+2

E per convertire le primitive in stringhe, è 'Integer.parseInt',' Float.parseFloat', e così via. – Vulcan

+0

Sì. Sono a conoscenza di questi metodi. C# li ha. La classe di conversione C# è una classe di convenienza. È completamente inutile, ma rende il codice più pulito e più veloce da digitare. –

+0

Le persone che sono abituate a un particolare paradigma mancheranno sempre quelle convenzioni quando migreranno verso qualcos'altro. In realtà, una classe di convenienza per il casting tra i tipi di valore di base in Java non è necessaria (e probabilmente offuscante). Quando sono passato da Visual Basic 6, mi mancava la funzione Choose (i, args ...), quindi ne scrivo ancora una in questo giorno (è una sola) ma non è davvero necessaria (e poiché tutti gli argomenti devono essere valutato c'è un compromesso di prestazioni). – scottb

0

È possibile creare la propria classe di convertire facilmente

package com.abc; 

public class Convert { 
    public static int ToInt(Object obj) { 
    try{ 
     return Integer.parseInt(obj.toString()); 
    } 
    catch(Exception ex){ 
     return 0; 
    } 
    } 
    public static float ToFloat(Object obj) { 
    try{ 
     return Float.parseFloat(obj.toString()); 
    } 
    catch(Exception ex){ 
     return 0f; 
    } 
    } 

    public static boolean ToBoolean(Object obj){ 
    try{ 
     if(obj.getClass() == Boolean.class) 
     return (Boolean)obj; 

     return Boolean.parseBoolean(obj.toString()); 
    } 
    catch(Exception ex){ 
     return false; 
    } 
    } 
} 

alla suddetta classe di passaggio seguente prova di unità:

package com.abc; 

import static org.junit.Assert.assertEquals; 

import org.junit.Test; 

public class ConvertTest { 

    @Test 
    public void ConvertToInt() { 
    assertEquals(1, Convert.ToInt(1)); 
    assertEquals(0, Convert.ToInt("Suresh")); 
    assertEquals(0, Convert.ToInt(null)); 
    assertEquals(0, Convert.ToInt(true)); 
    assertEquals(0, Convert.ToInt(3.3f)); 
    } 

    @SuppressWarnings("deprecation") 
    @Test 
    public void ConvertToFloat() { 
    assertEquals(1f, Convert.ToFloat(1), 0.001f); 
    assertEquals(0f, Convert.ToFloat("Suresh"), 0.001f); 
    assertEquals(0f, Convert.ToFloat(null), 0.001f); 
    assertEquals(0f, Convert.ToFloat(true), 0.001f); 
    assertEquals(3.3f, Convert.ToFloat(3.3f), 0.001f); 
    } 

    @Test 
    public void ConvertToBoolean() { 
    assertEquals(false, Convert.ToBoolean(1)); 
    assertEquals(false, Convert.ToBoolean("Suresh")); 
    assertEquals(false, Convert.ToBoolean(null)); 
    assertEquals(true, Convert.ToBoolean(true)); 
    assertEquals(false, Convert.ToBoolean(false)); 
    assertEquals(false, Convert.ToBoolean(3.3f)); 
    } 
} 
Problemi correlati