在List中存储多个对象类型

时间:2013-08-17 12:10:36

标签: java

我有关于电脑商店的以下作业:

  1. 有几个类包括:监视器,案例,鼠标,键盘。

  2. 所有课程都有公共字段:id,name,price,quantity。

  3. 每个班级都有一些独特的领域。 所有大多数功能都是:添加,更新,删除,查找,显示列表,保存,加载文件

    - 所以,首先我要创建一个名为Product的类有4个常用字段。以上课程将从Product扩展。

    - 然后,我想我可能会创建一个ComputerStore类,其字段是项类型ArrayList。 items存储所有对象,这些对象是上面4个类的实例但是我不确定。

    是否合理?我需要一些想法

  4. 之前,我总是将ArrayList商店仅用于一个类,如

    List <String> list = new ArrayList<String>();
    

    现在他们是多种类型。我认为它在Java中是通用的,对吧?

    如果我想要更新1件商品。我必须考虑如何为他们改变信息。例如:鼠标用于某些代码,键盘用于其他代码。无论如何,谢谢大家!

5 个答案:

答案 0 :(得分:3)

您的方法是100%合理的。

你完全走上正轨“泛型”。首先,查看官方enter link description here

接下来,只需考虑现实世界中的数据,就像您已经在做的那样:显示器,外壳,鼠标和键盘都是产品。您的计算机商店的库存是产品列表。

提示:产品清单。

通过该教程将其与您对仿制药的了解结合在一起,您将会很高兴。

答案 1 :(得分:2)

你可以使用java generic.First创建一个带有超类类型产品的java集合(例如:List)。现在,您可以在类产品扩展的集合(List)中添加任何子类(监视器键盘等)。

public class Product{

}
public class Monitor extends Product{

}

public class Keyboard extends Product{

}

List<Product> products = new ArrayList<Product>();
products.add(new Monitor());
products.add(new Keyboard());

答案 2 :(得分:1)

由于您有一个超类(Product),您可以将列表的类型设为Product,即

List<Product> list = new ArrayList<Product>();
list.add(new Mouse());
list.add(new Keyboard());

它允许你迭代它们并列出它们的名称和价格,而不需要关心这个类,但是如果你打算从列表中取出一个项目,你需要检查它的实际类型(取决于你做什么)它)。

答案 3 :(得分:0)

您可以执行以下操作

import java.util.List;
import java.util.ArrayList;

class Test{
public static void main(String... args){
    List<MultiObj> multiObjs = new ArrayList();

    MultiObj ob = new MultiObj(); multiObjs.add(ob);
    ResX xOb = new ResX(); multiObjs.add(xOb);
    ResY yOb = new ResY(); multiObjs.add(yOb);
    ResZ zOb = new ResZ(); multiObjs.add(zOb);

    for (int i = 0; i < multiObjs.size(); i++ ) {
        System.out.println(multiObjs.get(i).getV());
    }
    System.out.println("Waoo its working");
 }
}
class MultiObj{
public String greet(){
    return "Hello World";
}
public String getV(){
    return "Hello World";
 }
}
class ResX extends MultiObj{
String x = "ResX";
public String getX(){
    return x;
}
public String getV(){
    return x;
 }
}
class ResY extends MultiObj{
String y = "ResY";
public String getY(){
    return y;
}
public String getV(){
    return y;
 }
}
class ResZ extends MultiObj{
String z = "ResZ";
public String getZ(){
    return z;
}
public String getV(){
    return z;
 }
}

答案 4 :(得分:-4)

你可以这样做:

public class Item {

public Item(int id, string name, float price, int amount, int ArrayID) {
if (ArrayID == 1) { 
ID1 = id;
name1 = name;
price1 = price;
amount1 = amount;
}
if (ArrayID == 2) { 
ID2 = id;
name2 = name;
price2 = price;
amount2 = amount;
}
if (ArrayID == 3) { 
ID3 = id;
name3 = name;
price3 = price;
amount3 = amount;
}
if (ArrayID == 4) { 
ID4 = id;
name4 = name;
price4 = price;
amount4 = amount;
}

}

//ArrayID #1
public static int ID1;
public static String name1;
public static float price1;
public static int amount1;

//ArrayID #2
public static int ID2;
public static String name2;
public static float price2;
public static int amount2;

//ArrayID #3
public static int ID3;
public static String name3;
public static float price3;
public static int amount3;

//ArrayID #4
public static int ID4;
public static String name4;
public static float price4;
public static int amount4;


public static int[] id = ID1, ID2 ID3, ID4;
//so forth...
}