Java - 从其他类调用对象?

时间:2017-12-01 07:00:27

标签: java arrays object

我正在制作一个DnD程序,基本上只是跟踪所有内容。我有三个与此问题相关的类,我的主要(它只是执行其他所有内容的集线器),一个Item类,它包含各个单独项的所有属性,还有一个InventoryList类,它基本上只定义了一个邪恶的项目负载(这是一个单独的类,因为4e DnD中的项目数量很多)。我已经决定制作这些项目的数组,并称之为用户库存;首先,是否有更好的方法 - 即使用HashMap或ArrayList?其次,我在以下代码中获得了经典的“错误,无法找到符号”编译器错误(缩写为相关性):

主要方法:

public class DnD {
    public static void main (String[] args) throws FileNotFoundException, IOException {
        . . .
        Item[] myInventory = {Candle}; //error: symbol cannot be found
    } //main()
} //DnD

项目方法:

public class Item {
    . . .
    public static Item Candle = new Item("Candle", 1, "Provides dim light for 2 squares, and lasts for 1 hour.");
    public Item(String _name, double _price, String _desc) {
        name = _name;
        price = priceConverter(_price);
        description = _desc;
    } //Item()
} //Item

InventoryList方法:

public class InventoryList {
    . . .
    public InventoryList() {
        // I have no idea where to proceed with this.
        // Is there a way for me to use this to initialize ...
        // ... an Array of Items in this method, to use in the main?
        // The Item object stores name, price, and a description; ...
        // ... is there a way to create an Array or similar to ...
        // ... display all that information at once and hold it together?
    }
}

我似乎无法从Item类中召唤主要的项目。我的库存(项目[])因此而无效。

2 个答案:

答案 0 :(得分:1)

对于"找不到符号"错误,您可以像这样解决:

Item[] myInventory = {Item.Candle};

Candle在类Item中定义,因此您还必须输出类名。

关于如何实施InventoryList,我建议使用ArrayList<Item>来存储播放器的项目:

private ArrayList<Item> items = new ArrayList<>();

public ArrayList<Item> getItems() {
    return items;
}

ArrayList可以动态更改大小,因此如果您想向玩家的广告资源添加更多项目,您可以非常方便地进行此操作。

答案 1 :(得分:0)

您必须限定静态属性

Item[] myInventory = {Item.Candle};

第二个问题是相当粗暴,做更多研究并提出一个更集中的问题。