2016-02-09 42 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