2012-12-21 13 views
9

W języku C# lubiłem używać klasy Konwertuj. Dzięki temu konwersja z jednego rodzaju na inny była łatwa i spójna. Myślałem o napisaniu podobnej klasy w Javie, ale nie chcę wymyślać koła. Więc szukałem go, aby sprawdzić, czy coś takiego istnieje i nie osiąga dobrych wyników. Więc czy ktoś jest świadomy czegoś takiego w standardowych bibliotekach, Google Guava lub Common Apache?W Javie jest odpowiednik klasy Konwertuj z C#?

+0

Idę tylko komentarz, że utworzenie klasy otoki takiego jest całkowicie bezcelowe dla java ... – Brendan

Odpowiedz

7

Nie ma takiej klasy w języku Java.

Przyjęta praktyka w języku Java polega na zwykłym rzucaniu prymitywów. Jest to łatwy i spójny sposób przekształcania z jednego typu na inny.

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

A do konwersji prymitywów na ciągi, to 'Integer.parseInt',' Float.parseFloat', i tak dalej. – Vulcan

+0

Tak. Jestem świadomy tych metod. C# ma je. Klasa C# Convert jest klasą wygody. Jest to całkowicie niepotrzebne, ale sprawia, że ​​kod jest czystszy i szybszy do wypisania. –

+0

Ludzie, którzy są przyzwyczajeni do konkretnego paradygmatu, zawsze będą tęsknić za tymi konwencjami, kiedy migrują do czegoś innego. W rzeczywistości klasa wygody dla rzutowania wśród podstawowych typów wartości w Javie jest niepotrzebna (i prawdopodobnie zaciemniająca). Kiedy przyszedłem z Visual Basic 6, przegapiłem funkcję Choose (i, args ...), więc wciąż piszę jedną do dziś (jest to jedna linijka), ale to naprawdę nie jest konieczne (i ponieważ wszystkie argumenty muszą być oceniane jest kompromitacja wydajności). – scottb

0

Można tworzyć własne klasy Convert łatwo

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; 
    } 
    } 
} 

Powyższa klasa mijania następujący test jednostka:

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)); 
    } 
}