[英]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.