2010-12-03 5 views
0

Je suis coincé avec cette mission depuis des semaines maintenant. J'ai juste besoin d'aide pour commencer. Voici d'abord le requriment:Java Generics Programmation avec Collection

Concevez un conteneur générique appelé GenericOrder qui agit comme une collection d'un nombre arbitraire d'objets dans Products.java. Concevoir un mécanisme qui donne à chaque instance du conteneur un identifiant unique. Implémentez autant de méthodes que nécessaire. Vous devez utiliser des fonctionnalités génériques Java.

Voici ce que j'ai, je ne sais pas si j'ai bien fait ou non. L'instructeur dit que GenericOrder doit utiliser la collection pour contenir plusieurs "produits".

public class GenericOrder<T> { 
    private T theProduct; 
    private static int count = 1; 
    private final int orderNumber = count++; 
    private Collection<T> genCollection; 

    public GenericOrder(T theClass) 
    { 
     this.theProduct = theClass; 
    } 

    public String getProductID() 
    { 
    return theProduct.getClass().getName() + ": " + orderNumber; 
    } 

    public T createInstance() 
    throws IllegalAccessException, InstantiationException { 
     return this.theProduct; 
    } 
} 
+0

Alors, quelle est votre question? Demandez-vous si votre «classe» satisfait la mission? – Gabe

+0

Il me semble que vous mélangez étrangement le produit et le contenant. Pour quoi avez-vous besoin de 'theProduct' et de toutes les méthodes qui s'y rapportent? – heikkim

Répondre

0

Concevoir un conteneur générique appelé GenericOrder qui agit comme une collection d'un nombre arbitraire d'objets

changer plutôt votre conteneur pour inclure ce @pst suggéré.

Concevoir un mécanisme qui donne à chaque instance du conteneur un identifiant unique.

Ici, vous avez presque raison. Mais votre pensée générale était correcte.

public class GenericOrder<T> { 
    private static int ID = 0; 
    private String serial; 
    List<T> products; 

    public GenericOrder() { 
     serial = "CONTAINER_" + ID++; 
     products = new ArrayList<T>(); 
    } 

    public String getUniqueSerial() { 
     return serial; 
    } 

    public void addProduct(T newProduct) { 
     products.add(newProduct); 
    } 

    public int getNumberOfProducts() { 
     return products.size(); 
    } 
} 
+0

Merci pour votre réponse. Je vérifierai avec Instructor avec votre code. Ceci est un cours d'apprentissage à distance, donc c'est très difficile pour moi de poser des questions à l'instructeur – Jack

1

J'imagine qu'il peut y avoir plusieurs « produits » par « ordre »:

public class GenericOrder<T> { 
    List<T> productsOrdered ... 
    public GenericOrder(List<T> products) { 
    ... 
    } 
} 

Mais je ne sais vraiment pas comment les médicaments génériques sont censés aider, et je ne peux pas honnêtement "assembler" la cession de juste ce contexte, YMMV.

Bonne codification. :)

0

Je pourrais être tout faux ici, mais il me semble que vous devriez hériter de Collection. Et pour l'identifiant unique, j'utiliserais peut-être une carte.

+0

Je ne pense pas qu'il doive hériter de 'Collection'. Sa description dit qu'il doit * agir comme une collection *. L'identifiant unique fait référence à l'identification des conteneurs. Pour utiliser une «carte», vous devrez toujours connaître les clés. –