如何在Android中动态强制转换类的实例

时间:2017-08-25 06:43:41

标签: java android class casting type-conversion

下面我给出了一个简短的示例代码。但我在切换案例中使用此功能来处理 5 不同视图上的点击事件。对于每种情况,我都需要在继续之前检查类的实例。

RecyclerView.ViewHolder

此处的课程从 FolderVH 扩展而来,并命名为 NoteVH CheckListVH ,的 if(oHolder instanceof FolderVH) oHolder = ((FolderVH) oHolder); 即可。所有这些扩展类都具有完全相同的结构但不同的值赋值。

有没有办法可以动态地转换类实例......比如说

oHolder

然后我只需要使用background-attachment

2 个答案:

答案 0 :(得分:1)

如果你的所有viewHolders具有相同的结构,我将concider创建一个扩展RecyclerView.ViewHolder的父类(让我们调用它" ParentViewHolder")。那么你的viewHolders应该扩展你的" ParentViewHolder"。 最后,你总是可以将oHolder强制转换为" ParentViewHolder"上课,一切都应该有效。 希望我理解并回答你的问题。 :)

答案 1 :(得分:1)

您可以让所有三个FolderVHNoteVHCheckListVH扩展一个公共基类,比如ViewPagerVH,其中包含viewPager字段:

class ViewPagerVH extends RecyclerView.ViewHolder {
  public ViewPager viewPager;
}

class FolderVH extends ViewPagerVH { ... }
// etc.

然后你可以像这样检查:

if (oHolder instanceof ViewPagerVH) {
  ((ViewPagerVH) oHolder).viewPager.setCurrentItem(0, true);
}