Java泛型函数,它使用开关返回值

时间:2017-08-14 11:33:21

标签: java android

我正在获取已在我实例化搜索片段的行上定义的错误片段。我做错了什么?

private <T extends Fragment> T getInitialFragment(Tab clickedTab) {
        switch (clickedTab) {
            case TAB_A:
                ListFragment fragment = new ListFragment();
                return (T)fragment;
            case TAB_B:
                SearchFragment fragment = new SearchFragment();
                return (T)fragment;
        }
 }

2 个答案:

答案 0 :(得分:0)

如果共享范围,则不能对不同的变量使用相同的名称 - 在代码中声明了两次名为fragment的变量。你不能拥有它,所以重命名,即重新命名为fragmentList秒至fragmentSearch或完全抛弃任务,因为没有任何好处:

private <T extends Fragment> T getInitialFragment(Tab clickedTab) {

        switch (clickedTab) {
            case TAB_A:
                return (T)(new ListFragment());
            case TAB_B:
                return (T)(new SearchFragment());
        }

 }

您还应该将default添加到switch

答案 1 :(得分:0)

因为switch-case是低谷(所有情况都被访问,直到找到中断/返回)所有情况都具有相同的范围。将第二个片段重命名为fragment2,或者在外部范围中将其定义为T片段;

编辑:迟到。