无法将PagedListHolder <clazz>解析为类型</clazz>

时间:2013-05-19 06:47:03

标签: java spring spring-mvc

正如您在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)我的代码有什么问题&amp;为什么我不能把那个JobInfo传递进去?

2)我可以使用Java Reflection API解决这个问题吗? (如果是的话怎么样?)

1 个答案:

答案 0 :(得分: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>