为什么需要显式铸造?

时间:2012-08-03 04:30:56

标签: java android casting

我一直在查看Android开发教程,在查看了一些代码之后,我注意到了以下内容:

HeadlinesFragment mHeadlinesFragment;
mHeadlinesFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById(
            R.id.headlines);

我对Java很新,所以这可能是问题,但为什么这个(HeadlinesFragment)的显式转换是必要的? mHeadlinesFragment是否已经是HeadlinesFragment类型?

谢谢!

1 个答案:

答案 0 :(得分:3)

getSupportFragmentManager().findFragmentById(
            R.id.headlines); 

这会返回一个Fragment对象,而HeadlinesFragment是Fragment类的子类,每次你将超类的对象分配给你需要显式转换的子类的引用时。

当您将子类对象分配给超类引用时,您不需要显式转换,例如分配:

List<String> list=new ArrayList<String>();