2012-08-03 97 views
1

我一直在关注Android开发教程和一些代码看后,我注意到以下几点:为什么需要显式转换?

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

我是相当新的Java的,这样可能是问题,但为什么这显式投射(HeadlinesFragment)是必要的? mHeadlinesFragment是否已经是HeadlinesFragment的类型?

谢谢!

回答

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

这将返回一个片段对象,HeadlinesFragment是子类片段类的,每次和你的超分配的目的,你需要明确地投子类的参考。

你不需要显式类型转换,当你分配一个子类对象超类的引用,比如分配:

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

是,不好说。对于Android中真正返回的其他内容也可以这么说。最受欢迎的是'TextView view =(TextView)findViewById(R.id.some_text);'什么jeet说的是有道理的,因为如果你仔细想想,返回'View'更容易,而不是想象某种方式总是知道用户需要返回什么,这是你无法做到的。所以你让程序员明确地说:“我知道我在做什么。” – Andy 2012-08-03 04:38:37

+0

感谢真棒解释家伙! – user1549672 2012-08-03 06:03:28

相关问题