在 Android 文档中:http://developer.android.com/guide/components/fragments.html http://developer.android.com/guide/components/fragments.html片段实现一个接口。
在 onAttach() 回调中,它似乎将当前 Activity 强制转换为一个接口。从概念上讲,这怎么可能,并且是普通 Java 中相同类型的强制转换标准实践吗?
public static class FragmentA extends ListFragment {
// Container Activity must implement this interface
public interface OnArticleSelectedListener {
public void onArticleSelected(Uri articleUri);
OnArticleSelectedListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}
...
}
有关该主题的一些基本知识:
想想一个interface
作为一组函数。如果一个class
实现一个interface
,那么它保证它已经实现了所有接口函数。
在你的情况下:
如果您有一个对象,并且您只需要对象实现的接口的功能,那么您可以将该对象处理(并强制转换)到该接口。这样你就失去了关于你的对象的“信息”,因为你将无法使用它的函数(接口函数除外),但有时它就足够了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)