正如您在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解决这个问题吗? (如果是的话怎么样?)
答案 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>