如何使用Java泛型调用带有动态参数的方法?

如何使用Java泛型调用带有动态参数的方法?,java,jakarta-ee,generics,Java,Jakarta Ee,Generics,我有2个对象,用户和用户事件。。。我有7种方法,这两种方法都通用。。User和userevent是不同的对象,几乎没有匹配的参数 如何使用泛型实现这一点,以便可以重用user和userevents的方法??方法接受user或userevent或两者对象作为参数。如果我理解正确,请检查我为dao对象编写的示例 public interface IDao<T> { void saveOrUpdate(T instance); Long save(T instance); void d

我有2个对象,用户和用户事件。。。我有7种方法,这两种方法都通用。。User和userevent是不同的对象,几乎没有匹配的参数


如何使用泛型实现这一点,以便可以重用user和userevents的方法??方法接受user或userevent或两者对象作为参数。

如果我理解正确,请检查我为dao对象编写的示例

public interface IDao<T> {
void saveOrUpdate(T instance);

Long save(T instance);

void delete(T instance);

T get(Long id);
}

public class BasicHibernateDao<T> extends HibernateDaoSupport implements IDao<T> {
private final Class<T> clazz;

public BasicHibernateDao(Class<T> clazz) {
    this.clazz = clazz;
}

public void saveOrUpdate(T instance) {
    getHibernateTemplate().saveOrUpdate(instance);
}

public Long save(T instance) {
    return (Long) getHibernateTemplate().save(instance);
}

public void delete(T instance) {
    getHibernateTemplate().delete(instance);
}

public T get(Long id) {
    return getHibernateTemplate().get(clazz, id);
}
}

public class ClientDao extends BasicHibernateDao<Client> {

public ClientDao() {
    super(Client.class);
}
}
公共接口IDao{
void saveOrUpdate(T实例);
长保存(T实例);
无效删除(T实例);
T get(长id);
}
公共类BasichBernateDao扩展HibernateDaoSupport实现IDao{
私人期末班;
公共基础课(班级){
this.clazz=clazz;
}
public void saveOrUpdate(T实例){
getHibernateTemplate().saveOrUpdate(实例);
}
公共长存储(T实例){
返回(长)getHibernateTemplate().save(实例);
}
公共无效删除(T实例){
getHibernateTemplate().delete(实例);
}
公共不获取(长id){
返回getHibernateTemplate().get(clazz,id);
}
}
公共类ClientDao扩展了BasicHibernateDao{
公共客户端dao(){
super(Client.class);
}
}

希望这个类比能对您有所帮助

为什么不使用界面呢

User和UserEvent类都将实现此接口。通用方法将在接口中声明,并在两个类中重写。 至于方法,它们将接受实现新创建接口的任何对象作为参数