2010-12-03 6 views
0

나는 몇 주 동안이 과제를 고수하고있다. 나는 시작을위한 도움이 필요하다. 첫 번째 requriment는 다음과 같습니다.Java Generics 프로그래밍 with

Products.java에서 임의의 수의 객체 컬렉션으로 작동하는 GenericOrder라는 일반 컨테이너를 디자인합니다. 컨테이너의 각 인스턴스에 고유 한 식별자를 제공하는 메커니즘을 디자인합니다. 필요한만큼 메소드를 구현하십시오. Java generics 기능을 사용해야합니다.

내가 옳은 것인지 아닌지는 여기에 있습니다. 강사가 말하길,이 GenericOrder는 컬렉션을 사용하여 여러 "Product"를 보유해야합니다.

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

무엇이 문제입니까? 당신의 클래스가 과제를 만족하는지 묻고 있습니까? – Gabe

+0

제품과 컨테이너를 섞어 버린 것 같아요. '제품'과 그 제품에 어떤 방식으로 간섭했는지 뭘 알아야합니까? – heikkim

답변

0

디자인 오히려 제안 @pst 것을 포함하는 컨테이너를 변경 객체

의 임의의 수의 모음 역할을 GenericOrder라는 일반적인 컨테이너입니다.

컨테이너의 각 인스턴스에 고유 식별자를 제공하는 메커니즘을 디자인합니다.

여기 거의 맞습니다. 그러나 당신의 일반적인 생각은 옳았습니다.

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

답장을 보내 주셔서 감사합니다. 강사와 함께 코드를 확인해 보겠습니다. 이것은 원격 교육 코스이므로 강사에게 질문하는 것이 매우 어렵습니다. – Jack

1
나는 "순서"당 여러 "제품"있을 수 상상

:

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

하지만 난 정말 제네릭이 도움이 가정하는 방법을 몰라, 내가 할 수없는 정직 그 문맥으로부터의 과제를 "함께 모으고", YMMV.

해피 코딩. :)

0

나는 여기에서 모두 틀릴 수도 있지만, 콜렉션에서 상속해야하는 것처럼 들리 네. 고유 한 식별자의 경우 아마도지도를 사용할 것입니다.

+0

나는 그가'Collection'을 상속해야한다고 생각하지 않습니다. 그는 묘사가 * 컬렉션 *으로 행동해야한다고 말합니다. 고유 ID는 A 테이너 식별을의 L합니다. 'Map'을 사용하려면 여전히 키를 알아야합니다. –