簡體   English   中英

將 int 傳遞給另一個 class 包含的 class

[英]Passing an int to a class that is contained by another class

我對面向 object 的編程非常陌生,想知道是否可以將 int 傳遞給另一個 class 包含的 class。 我的代碼可以編譯,但是當我在 main 中運行 printList 時,itemID 永遠不會打印。

這是我的 ArrayList class

import java.util.ArrayList;
public class ItemList{
    int itemListID
    String itemName;
    ArrayList<Item> itemList = new ArrayList<>();
     
    public ItemList(String name, int listID) {
        itemName = name;
        itemListID = listID
    }
    public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price));
    }
    public int getItemListID(){
        return itemListID;
    }
    public void printItems(){
        for(int i=0; i < itemList.size(); i++){
            System.out.println(itemList.get(i));
        }
    }
}

這是 arrayList 中包含的項目的 class

public class Item {
    String name;
    double weight;
    double price;
    int itemListID;
  
    public Item(String itemName,double itemWeight, double itemPrice){
        this.name = itemName;
        this.weight = itemWeight;
        this.price = itemPrice;
    }
    public int setItemListID(){
        itemListID = ItemList.getItemListID();
    }
    
    public String toString(){
        return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
        + itemListID);
    }    
}

這是主要的

public class HopefulShopMain{
    public static void main (String[] args){
         ItemList myList = new ItemList("Fruit",1);
         
         myList.addItem("Apple", 100, 60);
         myList.addItem("Banana", 118, 50);
         
         myList.printItems();
    }
}

想知道是否可以將 int 傳遞給另一個 class 包含的 class

是的。 這可以在不同的級別(構造函數或方法)以不同的方式完成。

在您的示例中,您可以將 itemListID 傳遞給 Item 的構造函數:

    public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price,this.itemListID));
    }

然后,您的 Item class 可以將該值保留在字段中,就像它在其構造函數中獲取的其他值一樣。

public class Item {
    String name;
    double weight;
    double price;
    int itemListID;
  
    public Item(String itemName,double itemWeight, double itemPrice, int itemListID){
        this.name = itemName;
        this.weight = itemWeight;
        this.price = itemPrice;
        this.itemListID = itemListID;
    }
    
    public String toString(){
        return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
        + itemListID);
    }    
}

或者,您可以將整個ItemList傳遞給構造函數,以便它可以引用ItemList上的任何值

或者您可以在ItemList中將Item設為(非靜態)嵌套 class ,因此它可以直接引用該字段。 這可能適合您的情況,因為您似乎只希望ItemList class 本身創建和訪問Item

import java.util.ArrayList;
public class ItemList{
    int itemListID
    String itemName;
    ArrayList<Item> itemList = new ArrayList<>();
     
    public ItemList(String name, int listID) {
        itemName = name;
        itemListID = listID
    }
    public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price));
    }
    public int getItemListID(){
        return itemListID;
    }
    public void printItems(){
        for(int i=0; i < itemList.size(); i++){
            System.out.println(itemList.get(i));
        }
    }
    class Item {
        String name;
        double weight;
        double price;
      
        public Item(String itemName,double itemWeight, double itemPrice){
            this.name = itemName;
            this.weight = itemWeight;
            this.price = itemPrice;
        }
        
        public String toString(){
            return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
            + ItemList.this.itemListID);
        }    
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM