-1

如您所知,在 spring mvc 中,我们可以使用 PagedListHolder 类提供分页机制。我已经提供了为我提供分页的方法,但是我被迫为我的所有页面声明方法,因为我不知道如何在我的方法中传递泛型类型

这是我所做的:

public class Jobs {
private PagedListHolder<Jobs> jobsPagedList = null;
private JobInfo[]jobs = null;
....
@RequestMapping(value = "jobs/getLatestJobs", method = RequestMethod.GET)
public String provideLatestTweet(HttpServletRequest request){
  ... checking tasks
  jobs = getLatestJobs();
  int firstElement = pagingHandlerForLatestJobs(request);
}

那么这里是 pagingHandlerForLatestJobs() 实现:

private int pagingHandlerForLatestJobs(HttpServletRequest request){
  jobsPagedList = new PagedListHolder<JobInfo>(Arrays.asList(jobs));
//========================================================================//  
//How to pass above <JobInfo> classType as a parameter inside my method ? // 
//========================================================================//

 // ... setting some setting & returning the first page
}

我尝试了以下方法签名以实现目标:

private int pagingHandlerForLatestJobs(HttpServletRequest request, Class clazz)

并尝试像这样传递参数:

int firstElement = pagingHandlerForLatestJobs(request, JobInfo.class)

但是,当我在里面上课时:

new PagedListHolder<clazz>(Arrays.asList(jobs));

我遇到了运行时错误:

PagedListHolder 无法解析为类型

1)我的代码有什么问题以及为什么我不能在里面传递那个 JobInfo ?

2) 我可以使用 Java 反射 API 解决这个问题吗?(如果是的话如何?)

4

1 回答 1

0

关于您的问题,无需使用反射,普通的泛型就足够了。以下是您可以执行的操作:

jobsPagedList 用不同的类型声明:

private PagedListHolder<?> jobsPagedList = null;

方法为:

private <T> int pagingHandlerForLatestJobs(HttpServletRequest request) {
    jobsPagedList = new PagedListHolder<T>(Arrays.asList(jobs));

    /* ... do your magic */
}



注意:如果您想限制PagedListHolder只接收Jobs它及其子类型,请将声明更改为<? extends Jobs>,并将方法更改为<T extends Jobs>

于 2013-05-19T07:43:17.080 回答