在不使用instanceOf的不同类的数组中标识一个类

时间:2013-08-22 14:42:40

标签: java android instanceof

我不想硬连接类名并使用instanceOf但是动态识别类

让我说我有

// add fragments
mFragments = new ArrayList<Fragment>();
mFragments.add(Fragment.instantiate(this, class1.class.getName()));
mFragments.add(Fragment.instantiate(this, class2.class.getName()));

public class class1 extends SherlockListFragment{
   public static final String TAG = "class1";
}

所有类都有extends SherlockActivity或SherlockListFragment,因此它们具有公共基类Fragment。我现在怎样才能通过数组迭代得到例如static标记或其他可在不使用Class的情况下识别instanceOf的标记。我有一些想法,但想得到一些输入,所以我可以学习

 public static final String TAG = "class1"

2 个答案:

答案 0 :(得分:2)

在基类中添加一个返回标记的方法。然后遍历您的结构并获取每个子类型的标记。

public class SherlockListFragment{
    public String getTag(){ 
        return TAG;
    }
}

您无需确定类的确切子类型。每当你开始遇到像这样的奇怪问题时,我建议先重新设计,而不是找工作。

答案 1 :(得分:1)

Fragment课程中有一个方法如下:

public class Fragment {
    ...
    public String getTag() {
       return this.getClass().getCanonicalName();
    }
}

public class Fragment1 extends Fragment {
   ...
}

public class Fragment2 extends Fragment {
   ...
}

现在,我使用下面的简单代码对其进行了测试:

Fragment f = new Fragment1();
Fragment f1 = new Fragment2();

System.out.println(f.getTag());
System.out.println(f1.getTag());

提供输出:

Fragment1
Fragment2