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

时间:2018-09-27 21:55:14

标签: java generics pojo

我有两个非常相似的字段Foo1Foo2。 而且我有一个convert方法,可以接受Foo1类,如下所示

public static <T> T convert(IFoo1 foo1, Class<T extends IFoo2> clz) {
    T foo2 = clz.newInstance();
    // Setter methods
    return foo2; 
}

但是我遇到了错误:令牌“扩展”,预期语法错误

Foo1Foo2都实现接口IFoo1IFoo2

1 个答案:

答案 0 :(得分:3)

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

将方法声明更改为:

public static <T extends IFoo2> T convert(IFoo1 foo1, Class<T> clz) {
    T foo2 = clz.newInstance();
    ....
    return foo2; 
}

您可能一直在想边界的另一种类型。我建议阅读以下问题:Understanding upper and lower bounds on ? in Java Generics