2016-02-09 99 views
-3

我正試圖從官方開發人員網站和Udacity學習Android應用程序開發。一些變量聲明如下:在android中的某些變量聲明中,類型在括號中聲明。爲什麼?

ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast) 

或:

urlConnection = (HttpURLConnection) url.openConnection() 

我的問題是,爲什麼類型也包括在括號?例如(ListView)和(HttpURLConnection)。 這是一個java的東西,還是它特定於android?

+2

其對象類型轉換.. – Satya

+1

閱讀:http://stackoverflow.com/questions/20096297/explicit-type-casting-example-in-java –

回答

2

這是將一個對象的類型更改爲另一個對象的對象強制轉換。這不是Android獨有的;這是一個Java語言功能。 Java中有關於何時可以工作的規則。通常在您想將某個對象的類型更改爲更具體的類型時使用它,以便您可以調用原本不可用的方法。

在第一個示例中,您顯示了一個類型爲ListView的強制轉換。如果沒有這種情況,該方法的返回類型將爲View,但您可能希望將其作爲ListView做一些特殊的事情,並且您知道它是一個ListView,因爲這是您在XML佈局中聲明的方式。所以你把它像這樣。

0

它與android的對象類型轉換無關。 可以有2個鑄造的java場景

·上溯造型 ·下溯造型

當我們在一個方向上從所述根類對孩子們或亞類投沿的類層次結構的參考,它是一個向下轉換。當我們沿着從子類到根的方向在類層次結構上施加引用時,它是一個向上的方向。在這種情況下,我們不需要使用投射算子。 Int在他的情況下,當您使用findViewByid在xml文件中查找視圖時,它將返回一個視圖對象,並將其向下轉換爲列表視圖以便您可以使用。

0

這不過是一個類型鑄造。

在第一種情況下

rootview.findViewById(R.id.listview_forecast) 

會返回一個視圖不ListView控件。所以爲了獲得參考,我們需要向下轉換ListView。

在第二種情況 (HttpURLConnection類)url.openConnection()

將返回的URLConnection不HttpURLConnection的所以它是垂頭喪氣到HttpURLConnection類。

0

ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast)

在此代碼,(ListView)類型轉換其通過方法findViewById(//)返回類型ListViewView

類似地(HttpURLConnection)將由url.openConnection返回的值轉換爲HttpURLConnection類型。

對於一個更簡單的例子,您可以將浮點數轉換爲整數。

float a = 10.3; 
int b = (int) a; // (int) will convert the 'a' into an integer and it's value will be 10 

類型轉換是編程和Java的一般概念,它對android來說並不是特別的。您可以在這裏瞭解更多關於類型轉換的信息:Casting in Java