Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么需要显式转换?_Java_Android_Casting - Fatal编程技术网

Java 为什么需要显式转换?

Java 为什么需要显式转换?,java,android,casting,Java,Android,Casting,我一直在看Android开发教程,在看了一些代码之后,我注意到以下几点: HeadlinesFragment mHeadlinesFragment; mHeadlinesFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById( R.id.headlines); 我对Java相当陌生,所以这可能是个问题,但是为什么(HeadlinesFragment)的显式转换是必要的呢?mH

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

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)吉特所说的是有道理的,因为如果你仔细想想,返回
视图
要容易得多,而不是想办法总是知道用户需要返回什么,这是你做不到的。所以你让程序员明确地说:“我知道我在做什么。”谢谢你们的精彩解释!