2016-02-18 46 views
-1

儘管您失去了鍵入安全性,但使用原始對象類數組能否擁有多類型數組是不好的事實?「對象」類的數組

代碼來理解:

public class testobject { 

    public static void main (String[] args){ 

     Object[] obj = new Object[5]; 
     obj[0] = "Cat"; 
     obj[1] = 7; 
     obj[2] = new Object(); 

     for(int i = 0; i < obj.length; i++){ 
      System.out.println(obj[i]); 
     } 

    } 

} 
+1

你不應該那樣做。你想解決什麼問題? – SLaks

+0

這不是問題,它是一個概念性問題。我一直在用PHP做這個,所以我想知道Java中是否有親戚。它不安全,但在一些簡單的情況下,它是有用的。 –

+1

是的,這很糟糕。這是懶惰的,而不是類型安全的,而且創建一個實際的類以將數據保存在正確類型的命名字段中要好得多。 –

回答

5

是的,這是不好用Object[]作爲一個完全通用陣列因爲你失去類型安全。

Java是一種強類型語言。這有很多好處,主要的好處是如果編碼良好,許多運行時錯誤會在編譯時被捕獲。如果你試圖去對抗(通過製作一切Object和朋友),你會反對Java的自然激勵,你將會很難。

比方說,你初始化Object[]就是專門滿弦的,像這樣的:

Object[] arr = {"Hello", "World"}; 

但你要第一個字符串的長度。你不能只是做以下的事情

int len = arr[0].length(); 

因爲java不再知道arr [0]是一個字符串。相反,你必須明確地做強制轉換爲字符串使用方法

int len = ((String) arr[0]).length(); 

相反,如果你已經初始化數組作爲String[]你可以調用任何你走出數組對象的字符串方法,因爲它們必須是String s。

String[] arr = {"Hello", "World"); 
int len = arr[0].length(); //--> 5 

TL; DR:Java的是強類型。擁抱這一點,不要反對它。你以後會感謝我。

+0

非常好,直接的解釋。類型特定方法的使用釘住了它。 –