2012-12-21 33 views
9

Trong C# Tôi thích sử dụng lớp Chuyển đổi. Nó đã chuyển đổi từ loại này sang loại khác dễ dàng và nhất quán. Tôi đã nghĩ về việc viết một lớp tương tự trong Java, nhưng tôi không muốn phát minh lại bánh xe. Vì vậy, tôi googled xung quanh để xem nếu một điều như vậy tồn tại và không nhận được kết quả tốt. Vì vậy, là bất cứ ai nhận thức được một cái gì đó như thế này hoặc trong libs tiêu chuẩn, google ổi, hoặc commache apache?Trong Java có tương đương với lớp Chuyển đổi từ C# không?

+0

tôi chỉ cần đi đến nhận xét rằng việc tạo ra một lớp wrapper như thế này hoàn toàn vô nghĩa đối với java ... – Brendan

Trả lời

7

Không có lớp nào giống như thế này trong java.

Thực tiễn được chấp nhận trong java là chỉ truyền nguyên thủy cho nhau. Đây là cách chuyển đổi dễ dàng và nhất quán từ loại này sang loại khác.

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

Và để chuyển đổi nguyên thủy thành chuỗi, đó là 'Integer.parseInt',' Float.parseFloat', v.v. – Vulcan

+0

Vâng. Tôi biết các phương pháp này. C# có chúng. Lớp C# Convert là một lớp tiện lợi. Nó hoàn toàn không cần thiết, nhưng nó làm cho mã sạch hơn và nhanh hơn để loại ra. –

+0

Những người quen thuộc với một mô hình cụ thể sẽ luôn bỏ lỡ những quy ước khi họ chuyển sang một thứ khác. Trong thực tế, một lớp tiện lợi để đúc giữa các loại giá trị cơ bản trong Java là không cần thiết (và có thể làm xáo trộn). Khi tôi đến từ Visual Basic 6, tôi đã bỏ lỡ chức năng Choose (i, args ...) vì vậy tôi vẫn viết một cái vào ngày này (nó là một lớp lót) nhưng nó thực sự không cần thiết (và vì tất cả các arg phải đánh giá có một sự cân bằng hiệu suất). – scottb

0

Bạn có thể tạo lớp Chuyển đổi riêng của bạn một cách dễ dàng

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

Các đơn vị kiểm tra trên lớp qua sau:

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)); 
    } 
} 
Các vấn đề liên quan