繁体   English   中英

在Java中是否有与C#相同的Convert类?

[英]In Java is there an equivalent of the Convert class from C#?

在C#中,我喜欢使用Convert类。 它使得从一种类型转换为另一种类型变得容易和一致。 我在考虑用Java编写类似的类,但我不想重新发明轮子。 所以我用Google搜索,看看是否存在这样的事情并且没有取得好成绩。 那么在标准的libs,google guava或apache commons中是否有人知道这样的事情?

在java中没有这样的类。

java中公认的做法是将基元相互转换。 这是一种从一种类型转换为另一种类型的简单且一致的方式。

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

您可以轻松创建自己的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));
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM