2017-03-15 7 views
-2

私は他のオブジェクトを格納する汎用配列クラスを持っています。ジェネリック配列からオブジェクト値を取得しようとすると、挿入オブジェクトクラスパスが出力されます。どのように値にアクセスできますか?クラスパスの代わりにジェネリック配列のオブジェクトの値を取得

public class Shop implements Initializable { 
    @FXML private TextField name; 
    @FXML private TextField quantity; 
    @FXML private TextArea list; 

    MyArrayList<Item> array = new MyArrayList<>(); 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

    } 

    @FXML 
    private void addItem() { 

     int q = Integer.parseInt(quantity.getText()); 
     String n = name.getText(); 

     Item item = new Item(n,q); 

     MyArrayList.getInstance().add(item); 

     System.out.println(MyArrayList.getInstance().getItem(0)); 
     //Outputs [email protected] instead of the value Banana. 

    } 
+0

'のSystem.out.println(MyArrayList.getInstance()のgetItem(0).getName());'。 'getName()'メソッドがない場合は、追加します。 – NAMS

+0

「方法を解決できません」と表示されます。 ItemクラスにgetName()メソッドがありますが、MyArrayListクラスからアクセスできません。 – mattesj

+0

'System.out.println(MyArrayList.getInstance()。getItem(0).getClass()。getN ame()); ' –

答えて

1

あなたはIntegerとStringをアイテムに入れていますか? MyArrayList.getInstance()。getItem(0).getName()または MyArrayList.getInstance()。getItem(0).getQuantity() は、値を出力します。

getメソッドを作成していない場合、またはフィールドがパブリックの場合は直接アクセスできます。

Uは、次のようなクラスからすべての値を取得したい場合は、toString()メソッドを上書きすることができます。

@Overwrite 
public String toString(){ 
    return name + "," + quantity; 
} 

、呼

System.out.println(MyArrayList.getInstance().getItem(0).toString()); 
関連する問題