无法从数组访问对象上的方法

时间:2013-09-27 14:37:41

标签: java android

我正在尝试在我正从数组访问的对象上调用方法。出于某种原因,我可以调用的唯一方法是Object类的方法。救命?这是我的代码:

listItem = findViewById(myResourceId);
TextView itemTextView = ((TextView)listItem.findViewById(R.id.list_item_text));
ImageView itemImageView = ((ImageView)listItem.findViewById(R.id.list_item_thumbnail));
ClassMember currentMember = myClassMembers[position];
itemImageView.setImageResource(getResources().getIdentifier(currentMember.getMemberThumbnailId()));

问题是我无法在currentMember对象上调用getMemberThumbnailId。

奇怪的是,如果我这样做,我可以让它发挥作用

myClassMembers[position].getThumbnailId();

而不是

ClassMember currentMember = myClassMembers[position];
currentMember.getThumbnailId();

2 个答案:

答案 0 :(得分:0)

如果您投射ClassMember currentMember,那么您应该能够访问所需的方法。

您只需要确保您访问的对象数组的类型正确。如果需要,请先检查一下。

if (currentMember instanceof ClassMember) { 
((ClassMember)currentMember).getMemberThumbnailId();

}

答案 1 :(得分:0)

你是如何宣布你的阵列的?你有没有宣布:

ClassMember myClassMembers = new ClassMember[anInt];

或者您将其声明为:

Object myClassMembers = new Object[anInt];

如果您选择了第二个选项,则必须将对象强制转换为原始类型(ClassMember)。 e.g。

ClassMember currentMember = (ClassMember) myClassMembers[position];

另一个因素可能是您如何将ClassMember实例添加到数组本身。