2012-12-21 13 views
9

C#ではConvertクラスの使用が好きでした。あるタイプから別のタイプへの変換を簡単かつ一貫性のあるものにしました。私はJavaで同様のクラスを書くことを考えていましたが、私はその輪を再構築したくありません。だから私はそのようなものが存在し、良い結果を得ていないかどうかを調べるために周りを探索した。だから、誰かが標準のlibs、グーグル、またはapacheのコモンズのいずれかのような何かを認識している?Javaには、C#のConvertクラスと同等のものがありますか?

+0

... – 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 ...)関数を見逃してしまったので、まだ1日に1つ書いています(これは1つのライナーですが、実際には必要ありません)。パフォーマンスのトレードオフがあると評価)。 – scottb

0

あなたがあなた自身の変換クラスを作成することができ、容易

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)); 
    } 
} 
関連する問題