Objet Java Tableau Foreach Méthode D'Accès
Après avoir développé en PHP pour un long temps, j'ai décidé de faire un pas dans Java. À l'aise en programmation orientée objet, la méthodologie et à tous, je suis en train de commencer à ce point au sein de java, mais je me suis accroché sur le passage de mon objet arraylist dans une déclaration à être imprimées à l'aide de l'Élément de méthodes de la classe.
HelloInvetory.java
package helloInventory;
import java.util.Arrays;
public class HelloInventory {
/**
* @param args
*/
public static void main(String[] args) {
//TODO Auto-generated method stub
Object InvetoryItems;
Inventory inv = new Inventory();
inv.createItemObj(101, "camera", "Used camera that I bought off of a homeless guy.", 500);
InvetoryItems = inv.getAllInventoryItems();
for(Object item : InvetoryItems){
System.out.println(item.getItemName());
}
System.out.println("Done");
}
}
Inventory.java
package helloInventory;
import java.util.*;
/**
* Tracks and maintains all items within the inventory
* @author levi
*
*/
public class Inventory {
List<Object> InventoryItems = new ArrayList<Object>();
/*
* create object from Items class
* and insert into Object[] array.
*/
public void createItemObj(int sku, String name, String descriptor, float price) {
Items item = new Items();
item.setSku(sku);
item.setItemName(name);
item.setItemDescription(descriptor);
item.setItemPrice(price);
this.setInventoryItems(item);
}
public Object getAllInventoryItems() {
//return InventoryItems;
return this.InventoryItems.toArray();
}
public void setInventoryItems(Object inventoryItems) {
//InventoryItems.add(inventoryItems);
this.InventoryItems.add(inventoryItems);
}
}
Items.java
package helloInventory;
/**
* Class object to hold each item details
* @author levi
*
*/
public class Items {
int sku;
String itemName;
String itemDescription;
float itemPrice;
public int getSku() {
return sku;
}
public void setSku(int sku) {
this.sku = sku;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public String getItemDescription() {
return itemDescription;
}
public void setItemDescription(String itemDescription) {
this.itemDescription = itemDescription;
}
public float getItemPrice() {
return itemPrice;
}
public void setItemPrice(float itemPrice) {
this.itemPrice = itemPrice;
}
}
Où je suis collé à l'intérieur de la HelloInventory.java
for(Object item : InvetoryItems){
System.out.println(item.getItemName());
}
IDE (Eclipse) me donne le message d'erreur "ne Peut itérer sur un tableau ou d'une instance de java.lang.Itératif". Est-il quelque chose de plus que j'ai besoin, ou que je vais autour de ce concept tout à fait de la mauvaise façon en Java? Exemple correcte serait utile.
Meilleur,
Levi
OriginalL'auteur LeviXC | 2012-02-04
Vous devez vous connecter pour publier un commentaire.
Vous avez une très étrange architecture ici, mon ami. Vous ne devriez pas utiliser le générique
Object
s partout, mais les types réels. Première chose:Pourquoi ne pas simplement retourner le
List
lui-même?Également modifier ce:
et ce:
Maintenant en itérant la
List
est la voile en douceur:Btw, j'ai changé
Items
àItem
de sortir de l'habitude. Un nom de classe doit indiquer une seule entité alors, par convention, c'est singulier.Maintenant, ne prenez pas cela dans le mauvais sens, mais vous avez peut être eu du mauvais pied avec Java, je vous conseille vivement cette lecture: http://www.mindview.net/Books/TIJ/ Cela a fonctionné pour moi quand j'ai commencé avec Java, peut-être que d'autres peuvent suggérer quelques bonnes sources.
OriginalL'auteur Tudor
Ok, deux choses. L'une est que Tudor est tout à fait juste, il est préférable d'utiliser les classes que vous êtes enceinte, non pas des Objets, et le style de ses points précis.
Deux est que si vous avez vraiment utiliser une liste d'objet, vous aurez besoin de jeter en arrière de l'objet de ce type, c'est que vous vous attendez à recevoir.
Cependant, je ne recommande pas de faire ce qu'il adopte effectivement ce doit être une erreur de compilation et lui fait une erreur d'Exécution (si la classe ne peut pas être jeté).
OriginalL'auteur Alex