簡體   English   中英

未經檢查的投放警告

[英]Unchecked cast warning

我收到未經檢查的Cast警告,盡管瀏覽了許多StackOverflow帖子,但似乎無法解決此問題。 進行此投射的正確,安全的方法是什么? 提前致謝 :-)

/**
 * 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;
    }
}

這完全取決於泛型在Java中的實現方式。 簡短的故事是,無法在運行時知道RetainedFragment是否實際上是RetainedFragment<T> 換句話說,系統知道這是RetainedFragment ,但無法知道T data是您想要的類型。

您可以在此處了解更多信息: https : //docs.oracle.com/javase/tutorial/java/generics/genTypes.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM