关于java泛型,如何做一个通用的方法?

需求: 做一个通用的方法,把service和实体类传进去,能够根据这个service去查一次数据库。
public Object encolseModel(Class object, Service service,ProceedingJoinPoint proceedingJoinPoint){
object = (Class)proceedingJoinPoint.getArgs()[0];

    if (object != null) {
        object = service.findById(object.get());
    }
    return object;
}

写到这里有点懵比
代码需要实现:
1.把【proceedingJoinPoint.getArgs()[0];】强制转换成某个实体类,比如Employee;
2.通过service,去数据库中查询出某个数据,返回object,

这是源代码,怎么把这段代码做的有通用性?
TblEmp tblEmp = (TblEmp) proceedingJoinPoint.getArgs()[0];
if (tblEmp != null) {
tblEmp = tblEmpService.findById(tblEmp.getEmpId());
}

图片说明
图片说明
图片说明
图片说明
图片说明
图片说明
图片说明

使用接口
http://blog.csdn.net/stzy00/article/details/40078325

package com.my.test.entity;

import java.io.Serializable;

/**

  • 实体接口
  • @author LiuKun 主键类型
    */
    public interface Entity {

    /**

    • 获取主键值
    • @return */ PK getPk();

}
package com.my.test.entity;

/**

  • 学生表实体
  • @author LiuKun
  • */
    public class Student implements Entity {

    private String id;// 编号
    private String name;// 姓名

    // ..........省略...........

    public String getPk() {
    return getId();
    }

    public String getId() {
    return id;
    }

    public void setId(String id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

}
package com.my.test.entity;

/**

  • 老师表实体
  • @author LiuKun
  • */
    public class Teacher implements Entity {

    private Integer id;// 编号
    private String name;// 姓名

    // ..........省略...........

    public Integer getPk() {
    return getId();
    }

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

}
package com.my.test.service;

import java.io.Serializable;

import com.my.test.entity.Entity;

/**

  • service接口
  • @author LiuKun
  • */
    public interface Service> {

    /**

    • 根据实体主键值,查询实体
    • @param pk
    • @return */ E findById(PK pk); } package com.my.test.service;

import com.my.test.entity.Student;

/**

  • 学生表service
  • @author LiuKun
  • */
    public class StudentService implements Service {

    /**

    • 根据主键,查询对象 */ public Student findById(String pk) { // TODO return null; }

}
package com.my.test.service;

import com.my.test.entity.Teacher;

/**

  • 老师表service
  • @author LiuKun
  • */
    public class TeacherService implements Service {

    /**

    • 根据主键,查询对象 */ public Teacher findById(Integer pk) { // TODO return null; }

}
package com.my.test.interceptor;

import java.io.Serializable;

import org.aspectj.lang.ProceedingJoinPoint;

import com.my.test.service.Service;

/**

  • 拦截类
  • @author LiuKun
  • */
    public class EncloseInterceptor {

    public Object encloseModel(Class object, Service service,
    ProceedingJoinPoint proceedingJoinPoint) {
    // 获取主键
    java.io.Serializable pk = (Serializable) proceedingJoinPoint.getArgs()[0];
    Object entity = service.findById(pk);
    return entity;
    }

}

你上面的代码和泛型没啥关系吧。
按你说的可能是这样改:

public <T> encolseModel(<T> object, Service service,ProceedingJoinPoint proceedingJoinPoint){
object = (T)proceedingJoinPoint.getArgs()[0];
    if (object != null) {
        object = service.findById(object.getId());
    }
    return object;
}