首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未检查的强制转换警告

未检查的强制转换警告
EN

Stack Overflow用户
提问于 2017-07-21 23:53:06
回答 1查看 314关注 0票数 0

我收到了一个未经检查的强制转换警告,尽管我看了很多StackOverflow帖子,但似乎无法解决这个问题。什么是正确的,安全的方式来制作这个演员?提前感谢:-)

代码语言:javascript
复制
/**
 * Fragment for retaining data across screen orientation changes
 */

public class RetainedFragment<T> extends Fragment {

    public T data;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    public static <T> RetainedFragment<T> findOrCreate(FragmentManager fm, String tag) {

        // THIS LINE I GET AN UNCHECKED CAST WARNING 
        RetainedFragment<T> retainFragment = (RetainedFragment<T>) fm.findFragmentByTag(tag); 

        if(retainFragment == null){
            retainFragment = new RetainedFragment<>();
            fm.beginTransaction()
                    .add(retainFragment, tag)
                    .commitAllowingStateLoss();
        }

        return retainFragment;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-21 23:58:56

这归结于泛型是如何在Java中实现的。简而言之,无法在运行时知道您的RetainedFragment是否实际上是一个RetainedFragment<T>。换句话说,系统知道它是一个RetainedFragment,但它不能知道T data是您想要的类型。

你可以在这里阅读更多内容:https://docs.oracle.com/javase/tutorial/java/generics/genTypes.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45241930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档