无法为我的程序设置数组

时间:2013-11-08 16:26:38

标签: java

我正在为图书馆制作节目;图书馆包含不同的项目,如书籍,视频,期刊等......

我有一个名为item的类,其中包含库中每个项目的基本方法,我的bookvideojournal和所有其他项的类扩展{ {1}}。我想创建一个数组来包含库中的所有项目,以便人们可以搜索特定项目,它将在数组中找到它并显示该项目的信息。

我遇到的问题是,当我创建一个类型为Item的数组时,我只能调用Item类的方法而我无法调用我为{{{{ 1 {}在Item类中或book类中的book

所以我不得不为每种不同类型的journal使用单独的数组。 有没有办法只有一个数组可以调用每个项目的所有不同类的方法?

您可以在下面看到我的代码;我只附加了数组所在的journal类的代码,如果您需要查看其他类的代码,请告诉我。我将不胜感激任何帮助。

Items

1 个答案:

答案 0 :(得分:2)

您可以检查类型并将其强制转换为该类型,以获取对其他方法的访问权限。

public static void main(String args[]){
    for(Item item : itemList){
    if(item instanceof Book){
        Book book = (Book) item;
        book.someBookMethod();
     }
    }
}

虽然使用instanceofconsidered harmful

更好的设计是使Item抽象并创建所有子项共有的方法,例如add()

public abstract class Item{
     public void add();
     public void viewDetails();
}

class Book extends Item{
    public void add(){
    //fun stuff
    }
    public void viewDetails(){
    //moar serious business logic
   }
}
....
public static void main(String args[]){
for(Item item : itemList){
    item.add();
}
}