[英]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.