在C#中,我喜歡使用Convert類。它使得從一種類型轉換到另一種類型變得簡單和一致。我正在考慮用Java編寫類似的課程,但我不想重新發明。所以我搜索了一下,看看這樣的事情是否存在,並沒有得到好的結果。那麼是否有人知道這樣的標準庫,谷歌番石榴,或Apache共享?在Java中是否有來自C#的Convert類的等價物?
回答
在java中沒有這樣的類。
在java中被接受的做法是相互投入原語。這是從一種類型轉換爲另一種類型的簡單且一致的方式。
float bar = 4.0f;
int foo = (int) bar;
並且爲了將原語轉換爲字符串,它是'Integer.parseInt','Float.parseFloat'等等。 – Vulcan
是的。我知道這些方法。 C#讓他們去。 C#Convert類是一個方便的類。這完全沒有必要,但它使代碼更簡潔,更快捷。 –
習慣了某種特定範式的人在遷移到別的東西時總會錯過這些習俗。實際上,用於在Java中的基本值類型之間進行轉換的便利類是不必要的(並且可能是混淆)。當我從Visual Basic 6過來的時候,我錯過了Choose(i,args ...)函數,所以我現在仍然寫一個(這是一行代碼),但它並不是必須的(因爲所有的參數都必須是評估有一個性能折衷)。 – scottb
您可以創建自己的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));
}
}
- 1. 來自Obj的Java等價物C
- 2. Java中的「Buffer」類是否有Objective-C等價物?
- 3. 在Java中是否有TweenMax等價物
- 4. 在java中是否有array_intersect()等價物?
- 5. 是否有.Net System.Data的Java等價物?
- 6. excel vlookup是否有Java的等價物?
- 7. 是否有IConvertible/System.Convert的Java等價物?
- 8. Java中是否存在std :: bitset等價物(或類似物)?
- 9. 來自C++的constexpr的等價物?
- 10. 是否有Java的LineNumberReader的C#等價物?
- 11. 是否有Java的replaceAll(「\\ p {Cntrl}」,「」)的Objective-C(NSString)等價物?
- 12. Android中是否有MethodHandle的等價物?
- 13. 在Python中是否有sessionInfo()等價物?
- 14. 在Doxygen中是否有@inheritDoc等價物?
- 15. 在Python中是否有Rake等價物?
- 16. 在Ramda中是否有R.notEquals等價物?
- 17. 在Windows中是否有XEmbed等價物?
- 18. 在PHP的explode()函數的C++中是否有等價物?
- 19. 在C#和Java的C方法_strtod_l中是否有任何等價物?
- 20. 在Java中是否有.NET的System.Text.Encoding等價物?
- 21. 在Java中,是否有`public static main(String [] args)`的PHP等價物?
- 22. 這兩個MIPS翻譯是否來自C等價物?
- 23. 什麼是Java DecimalFormat的c#等價物?
- 24. 什麼是C++ deque的Java等價物?
- 25. 什麼是Java Socket.getInetAddress()的C#等價物?
- 26. 什麼是C#中的Java類的等價物?
- 27. 什麼是C#中的Java BigDecimal類的等價物?
- 28. 什麼是Java的類<X>類型的C#等價物?
- 29. 來自float.h的DBL_MIN_10_EXP,FLT_RADIX等等的Java等價物
- 30. 在C++/CLI中是否存在C#的不安全等價物?
我只是要發表評論,創建一個包裝類這樣對於java來說是完全沒有意義的...... – Brendan