2012-08-03 62 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

相關問題