Java 为什么需要显式转换?
我一直在看Android开发教程,在看了一些代码之后,我注意到以下几点:Java 为什么需要显式转换?,java,android,casting,Java,Android,Casting,我一直在看Android开发教程,在看了一些代码之后,我注意到以下几点: HeadlinesFragment mHeadlinesFragment; mHeadlinesFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById( R.id.headlines); 我对Java相当陌生,所以这可能是个问题,但是为什么(HeadlinesFragment)的显式转换是必要的呢?mH
HeadlinesFragment mHeadlinesFragment;
mHeadlinesFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById(
R.id.headlines);
我对Java相当陌生,所以这可能是个问题,但是为什么(HeadlinesFragment)的显式转换是必要的呢?mHeadlinesFragment是否不是HeadlinesFragment类型
谢谢
getSupportFragmentManager().findFragmentById(
R.id.headlines);
这将返回一个Fragment对象,HeadlinesFragment是Fragment类的子类,每次将超类的对象指定给需要显式转换的子类的引用时
将子类对象指定给超类引用时,不需要显式强制转换,例如指定:
List<String> list=new ArrayList<String>();
List List=new ArrayList();
是的,说得好。同样的道理也适用于Android中返回的其他任何东西。最流行的是TextView view=(TextView)findviewbyd(R.id.some_text)代码>吉特所说的是有道理的,因为如果你仔细想想,返回视图
要容易得多,而不是想办法总是知道用户需要返回什么,这是你做不到的。所以你让程序员明确地说:“我知道我在做什么。”谢谢你们的精彩解释!