2013-01-09 4 views
1

클래스 Pager 있습니다. 그리고 다양한 유형의 목록을 넣어야하고 동일한 목록 유형을 반환해야합니다.자바 일반 메서드

호출기 코드 생성자 및 getData 메서드 만 있으며 하위 집합 만 가져 와서 반환합니다.

public class Pager<E> { 
private int page; 
private int amount; 
private List<E> list; 

/** 
* Constructor 
* @param amount 
* @param page 
* @param list 
*/ 
public Pager(int page, int amount, List<E> list) { 
    this.page = page; 
    this.amount = amount; 
    this.list = list; 
} 

/** 
* Returns data to counter 
* @return 
*/ 
public List<E> getData() { 
    List<E> result = new ArrayList<E>(); 

    int from = this.page * this.amount; 
    int to = (this.page * this.amount) + this.amount; 

    for (int i = from; i < to; i++) { 
     result.add(this.list.get(i)); 
    } 

    return result; 
} 

메소드 호출 나는 목록과 호출기를 호출 한 후 나는 목록에 결과를 다시 넣을 필요가있다.

List<MyType1> list1 = ArrayList<Mytype1>(); 
List<MyType2> list2 = ArrayList<Mytype2>(); 
Pager pager = new Pager(
        page, 
        amount, 
        list1; 
       ); 
list1 = pager.getData(); 


Pager pager = new Pager(
        page, 
        amount, 
        list2 
       ); 

list2 = pager.getData(); 

이 호출기를 사용하면 다양한 종류의 목록을 처리 할 수 ​​있습니까?

도움 주셔서 감사합니다.

+0

당신이 질문을 추가하는 것을 잊지나요? – cowls

+4

그래서 뭐가 문제였습니까? –

+1

또한 "subList"메서드를 사용하여 하위 목록을 가져올 수도 있습니다. –

답변

2

는 호출기 변수에 제네릭 형식 매개 변수를 추가

List<MyType1> list1 = new ArrayList<Mytype1>(); 
List<MyType2> list2 = new ArrayList<Mytype2>(); 
Pager<MyType1> pager1 = new Pager<MyType1>(
        page, 
        amount, 
        list1; 
       ); 
list1 = pager1.getData(); 


Pager<MyType2> pager2 = new Pager<MyType2>(
        page, 
        amount, 
        list2 
       ); 

list2 = pager2.getData(); 
+0

이것은 내가 필요한 해결책입니다. 고맙습니다. – tttpapi