在java中扩展多个类的泛型

在java中扩展多个类的泛型,java,generics,Java,Generics,我有两个类:User和UserDto。它们是相似的,比如: User { int id; get\set} UserDto{ int id; get\set} 我有一个方法叫doSmth。 是否有一种方法可以使此方法作为输入参数(如doSmthUser\doSmthUserDto user)与这两个类一起工作,而不会使其重载 我尝试过使用泛型,比如 public <T extends User & UserDto> void doSmth(T user){ S

我有两个类:User和UserDto。它们是相似的,比如:

User {
int id;
get\set}

UserDto{
int id;
get\set}
我有一个方法叫doSmth。 是否有一种方法可以使此方法作为输入参数(如doSmthUser\doSmthUserDto user)与这两个类一起工作,而不会使其重载

我尝试过使用泛型,比如

    public <T extends User & UserDto> void doSmth(T user){
  System.out.println(user.getId);
}

但它不起作用。例如,方法会做一些简单的事情,比如有。创建一个声明方法操作的接口IUser,使User和userd实现相同的接口,然后doSmthIUser可以接受User和UserDto调用方法操作

不,您不能。一个类不能扩展多个接口。您可以使用composition而不是继承,think扩展User&userdt使T成为其他两种类型的交集类型。您需要的是联合类型。但是,在Java中不能使用泛型实现这一点。你必须使用继承。见下文@Boris的答案。