java - 实现并通过方法向 ArrayList 添加项目

标签 java interface arraylist implementation abstract

让我粘贴我的整个问题。请考虑一下我的英语,我的英语有点弱。

问题:一个调度系统,根据收到的销售订单进行调度 根据订购的元素需要适当包装的元素。假设这家商店出售富含艺术品的古董。这些艺术品 可归类为“易碎”元素。易碎元素有两类: 商店里出售的是“陶器”和“玻璃器皿”。每件元素都需要与适当的捆绑在一起 包。捆绑有两种类型:“BubbleWrap”或“Cushioning”。对于易碎元素 泡沫包装已完成,并使用非易碎元素“缓冲”。 然后,您需要创建一个具有艺术品 ArrayList 的 ARTITEM 类和一个 Dispatcher 来打包不同类型的 artitem 对象,这些对象可以被识别为脆弱的。 Salesorder 是我们的演示类,它将使用 Dispatcher 来打包 artitem?

我有一个接口(interface)Artpiece.java。我有 ArtItems.java 类,并且我已经在 ArtItems 中实现了 Artpiece.java 对象。

我的问题是,我需要从 Artpeice 的 ArrayList 中添加项目,Artpiece 基本上会有易碎的项目。例如[addItem(Artpiece artpiece)],那么我需要设置从 getCost() 方法获取总价。然后显示哪个易碎元素在里面。

我不知道如何从 ArrayList 获取值。每当我尝试存储在数组列表中时,它都会出错。

请参阅下面我的编码:

//Artpiece.java
interface Artpiece{
    public String name();
    public Bundling bundling();
    public float price();

} 

//Bundling.java
interface Bundling{
    public String bundle();
}

//Cushioning.java
public class Cushioning implements Bundling{
    //Override
    public String bundle() {
        return "Cushioning";
    }
}


//BubbleWrap.java

public class BubbleWrap implements Bundling{
    public String bundle() {
        return "BubbleWrap";
    }

//ArtItem.java
import java.util.ArrayList;
public class ArtItems implements Artpiece{

    ArrayList<Artpiece> artpiece = new ArrayList<Artpiece>();

    artpiece.add(void price());

    //Override
    public String name() {

        return "Pottery";
    }

    //Override
    public Bundling bundling() {

        return null;
    }

    //Override
    public float price() 
    {
        return 25;
    }

    public float getCost()
    {
        int sum=1, total = 0;
        return total += sum;

    }

    public void addItem(Pottery pottery) 
    {


    }
    public void addItem(GlassWare glassWare) 
    {


    }

    public void showItems() {


    }



}
}

//Now I am posting the driver classes.

//Dispatcher.java
public class Dispatcher { 
      public ArtItems prepareFGitem(){ 
      ArtItems artitems = new ArtItems(); 
      artitems.addItem(new Pottery()); 
      artitems.addItem(new GlassWare()); 
          return artitems;
      }
}

//Salesorder.java
 public class Salesorder { 
   public static void main(String[] args) { 
     Dispatcher dispatcher = new Dispatcher(); 
      ArtItems FGartitem = dispatcher.prepareFGitem(); 
      System.out.println("Fragile Items"); 
      FGartitem.showItems(); 
      System.out.println("Total Cost: " +FGartitem.getCost()); 
   } 
} 

最佳答案

为什么ArtItems要实现Artpiece?从逻辑上讲,您处理的每个项目都应该实现 ArtPiece,而不是 ArtItems,因为在 ArtItems 中您会威胁到项目的集合。这就像说仓库实现了货架。

添加到数组列表时,必须添加一个 Artpiece 类型的项目(或者实现 Artpiece 的类),您在 add 方法中创建了一个方法,但实际上并不起作用,artpiece.add(price( )) 会更有意义,但仍然不起作用,除非 Price() 实际上返回一件艺术品,从逻辑上讲它不应该返回。

关于java - 实现并通过方法向 ArrayList 添加项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17530067/

相关文章:

用于存储常量的 Android 嵌套接口(interface)

java - 如何在 Jersey 客户端中请求带有 json 正文的删除方法

java - 使用泛型在列表中转换对象

java - android.widget.LinearLayout 无法转换为 RecyclerView 中的 android.widget.TextView?

java - 是否存在用于配置 log4j 的 Web 界面?

java - JDiagram 旧版本在 ExtendedArrayList.sort 中使用 JRE 8 抛出 StackOverflowError

java - 如何在 Java 中将 ArrayList 列表写入 CSV 格式

java - 如何遍历嵌套 java 对象列表?

java - 从 ReSTLet 请求中获取 HTTP GET 参数

java - 如何使用 For 循环生成从 0,0 到 5,5 的坐标?