Java 是否需要双重定义数据类型?

Java 是否需要双重定义数据类型?,java,android,Java,Android,在代码中 NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 是否确实需要定义两次数据类型?否,您应该只需要定义一次,如: NotificationManager mNotificationManager=getSystemService(ns) 但请确保getSystemService的返回类型为NotificationManager或其子类之一。否,您只需定义一次,如:

在代码中

NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

是否确实需要定义两次数据类型?

否,您应该只需要定义一次,如:

NotificationManager mNotificationManager=getSystemService(ns)


但请确保
getSystemService
的返回类型为
NotificationManager
或其子类之一。

否,您只需定义一次,如:

NotificationManager mNotificationManager=getSystemService(ns)


但是,请确保
getSystemService
的返回类型为
NotificationManager
或其子类之一。

我认为您不是定义它两次,而是定义它一次,然后将值/对象强制转换为特定类型。在某些情况下,有必要这样做


我的观点是,定义和强制转换之间有区别。

我认为您不是定义它两次,而是定义它一次,然后将值/对象强制转换为特定类型。在某些情况下,有必要这样做


我的观点是定义和铸造之间有区别。

在这种情况下,是的。getSystemService返回一个对象实例,您必须将其强制转换为所需的任何对象(在本例中为
NotificationManager

在本例中为是。getSystemService返回一个对象实例,您必须将其强制转换为所需的任何对象(在本例中为
NotificationManager

您没有声明类型2x。在队列中

NotificationManager nm = (NotificationManager)getSystemService(...);
您已经声明了NotificationManager nm类型的变量,并将getSystemService()的返回类型(即Object)强制转换为NotificationManager类型,从而使对nm的赋值合法。注意,你可以不用演员

Object obj = getSystemService(...);

但是,除非您强制转换对象,否则不能将obj用作其他对象。

您没有声明类型2x。在队列中

NotificationManager nm = (NotificationManager)getSystemService(...);
您已经声明了NotificationManager nm类型的变量,并将getSystemService()的返回类型(即Object)强制转换为NotificationManager类型,从而使对nm的赋值合法。注意,你可以不用演员

Object obj = getSystemService(...);

但是,除非强制转换对象,否则不能将obj用作其他对象。

这取决于
getSystemService
;)的返回类型。)但是不,Java中没有类型推断。@delnan-你能描述一下类型干扰是什么意思吗?-我对有PHP背景的Java非常陌生。作为一个简单的例子,C#line
var mNotificationManager=getSystemService(ns)
mNotificationManager=getSystemService(ns)完全相同
。这取决于
getSystemService
;)的返回类型但是不,Java中没有类型推断。@delnan-你能描述一下类型干扰是什么意思吗?-我对有PHP背景的Java非常陌生。作为一个简单的例子,C#line
var mNotificationManager=getSystemService(ns)
mNotificationManager=getSystemService(ns)完全相同
.getSystemService()是一个android SDK调用并返回类型对象。getSystemService()是一个android SDK调用并返回类型对象。