2012-12-21 63 views
9

在C#中,我喜歡使用Convert類。它使得從一種類型轉換到另一種類型變得簡單和一致。我正在考慮用Java編寫類似的課程,但我不想重新發明。所以我搜索了一下,看看這樣的事情是否存在,並沒有得到好的結果。那麼是否有人知道這樣的標準庫,谷歌番石榴,或Apache共享?在Java中是否有來自C#的Convert類的等價物?

+0

我只是要發表評論,創建一個包裝類這樣對於java來說是完全沒有意義的...... – Brendan

回答

7

在java中沒有這樣的類。

在java中被接受的做法是相互投入原語。這是從一種類型轉換爲另一種類型的簡單且一致的方式。

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

並且爲了將原語轉換爲字符串,它是'Integer.parseInt','Float.parseFloat'等等。 – Vulcan

+0

是的。我知道這些方法。 C#讓他們去。 C#Convert類是一個方便的類。這完全沒有必要,但它使代碼更簡潔,更快捷。 –

+0

習慣了某種特定範式的人在遷移到別的東西時總會錯過這些習俗。實際上,用於在Java中的基本值類型之間進行轉換的便利類是不必要的(並且可能是混淆)。當我從Visual Basic 6過來的時候,我錯過了Choose(i,args ...)函數,所以我現在仍然寫一個(這是一行代碼),但它並不是必須的(因爲所有的參數都必須是評估有一個性能折衷)。 – scottb

0

您可以創建自己的Convert類容易

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

上面的類通過後的單元測試:

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)); 
    } 
} 
相關問題