2015-11-19 59 views
-2

我是新來的Java,我有下面的代碼(v是一個向量) ,我不明白這一點:Java - 「(Customer)v.get(i)」做什麼?

(客戶)v.get(I)

請給我解釋一下.tks

public void insert(Customer c) { 
    boolean checkExist = true; 
    if (checkExist && !isIn(c,v)) { 
     for (int i = 0; i < v.size(); i++) { 
      int check = c.compareTo((Customer) v.get(i)); 
      if (check < 0) { 
       Customer x = new Customer(); 
       x = (Customer) v.get(i); 
       v.set(i, c); 
       c = x; 
      } 
     } 
     v.add(c); 
    } 
} 
public boolean isIn(Customer c, Vector els) { 
    c = new Customer(); 
    for (int i = 0; i < els.size(); i++) { 
     if (c.equals(els.get(i))) { 
      return true; 
     } 
    } 
    return false; 
} 
+1

你幾乎肯定不想'c = new Customer()'行。它會覆蓋作爲參數傳入的值;你可能根本不會傳遞'客戶c'。 –

+0

http://stackoverflow.com/questions/5289393/casting-variables-in-java –

+0

http://stackoverflow.com/questions/5306835/casting-objects-in-java –

回答

0

你不告訴我們如何v宣佈。

在以下兩行有一個無害的小蟲子:

Customer x = new Customer(); 
x = (Customer) v.get(i); 

上創建一個新的客戶對象的第一線,但它從來沒有被使用,並在下一行在轉讓之後 - 此對象有資格進行垃圾收集。

這兩行可以被1-3:

Customer x = (Customer) v.get(i); 

的原因有必要使用鑄造(Customer)在情況v宣佈舉行一個更一般類型的對象,我們需要將其轉換爲Customer,以便將其分配給x並使用Customer屬性和方法。

關於鑄造的更多信息,請參閱Casting Objects部分。

0

它是鑄造由v.get(i)返回到客戶對象,所以對象返回可以被視爲一個顧客,訪問在客戶類/接口方法。如果返回的對象不能轉換爲Customer,因爲它不擴展/實現Customer,則會拋出ClassCastException。

0
x = (Customer) v.get(i); 

表示將您的向量中的i元素類型化爲類Customer。用簡單的話來說就是使用Customer類型的v.get(i)。