Java 使用泛型将一个对象转换为另一个对象

Java 使用泛型将一个对象转换为另一个对象,java,generics,pojo,Java,Generics,Pojo,我有两个类Foo1和Foo2非常相似的字段。 我有一个convert方法,它接受Foo1类,如下所示 public static <T> T convert(IFoo1 foo1, Class<T extends IFoo2> clz) { T foo2 = clz.newInstance(); // Setter methods return foo2; } publicstatict转换(ifoo1foo1,类clz){ T foo2=cl

我有两个类
Foo1
Foo2
非常相似的字段。 我有一个convert方法,它接受
Foo1
类,如下所示

public static <T> T convert(IFoo1 foo1, Class<T extends IFoo2> clz) {
    T foo2 = clz.newInstance();
    // Setter methods
    return foo2; 
}
publicstatict转换(ifoo1foo1,类clz){
T foo2=clz.newInstance();
//Setter方法
返回foo2;
}
但我得到了一个错误:应该是标记“extends”上的语法错误


Foo1
Foo2
都实现了接口
IFoo1
IFoo2

您得到的错误是因为您的泛型使用了不正确的边界

将方法声明更改为:

public static <T extends IFoo2> T convert(IFoo1 foo1, Class<T> clz) {
    T foo2 = clz.newInstance();
    ....
    return foo2; 
}
publicstatict转换(ifoo1foo1,类clz){
T foo2=clz.newInstance();
....
返回foo2;
}

你可能一直在考虑另一种类型的边界。我建议阅读此SO问题:

错误是什么?请粘贴错误;)而且,这似乎是泛型的一种拙劣用法。