2017-12-02 8 views
0

私はタイプItemの500のカスタムオブジェクトを持つJavaファイルを持っていると言います。さて、私は、ユーザーがこれらのオブジェクトのどれかをそのプログラムのリストに追加/削除できるようにしたいとします。私は一つ一つの項目の追加と削除機能を作成する必要があるだろう、ということにすれば多くのオブジェクトのためのJava - 1つのメソッド

public class Inventory { 
    public static ArrayList<Item> inv = new ArrayList<>(); 
    public static void addItem1 { 
     inv.add(Item.Item1); //Pulling from Item class 
    } //addItem1() 
    public static void removeItem1 { 
     inv.remove(Item.Item1); 
    } //removeItem1() 
    public static void addItem 2 { 
     . . . 
    } 
    . . . 
} 

:私はこのような何かをやって回避しようとします。何百ものアイテムがあるので、ユーザーがプログラムの内部から行うことができるより良い方法があることを願っています。これは、大量のネストされたswitchステートメントがすべてをスワップアウトする必要があるため、さらにひどいことになります。

代わりに、ユーザーの入力(追加しようとしているItemのリテラル名の文字列)を受け取る可能性のある単一の加算メソッドと1つのリムーバーメソッドを実装したいと思います。 Item。実装思考?

+0

たぶんフィールドを使用します。

その場合
public class Inventory<T> { public static ArrayList<Item> inv = new ArrayList<>(); public void addItem (T item){ inv.add((Item)item); // where item can be anything from Item.item1 to Item.item500 } public void removeItem (T item){ inv.remove((Item)item); } 

、あなたのアイテムが実際にあるかの項目を参照するには、次のように何かをしますか? –

+1

Item1とItem2の違いは何ですか? ????? –

+0

ところで、絶対に必要でない限り、 'ArrayList'ではなく' List'を使います。 – ifly6

答えて

2

汎用クラスの使用はどうですか? System.out.println(item.getClass().getName()); //should return Item

0

おそらく使用:

public void setItem(Item item){ 
    inv.add(item); 
} 

を次に除去するために同じ概念を使用します。

関連する問題