我有两个非常相似的字段Foo1
和Foo2
。
而且我有一个convert方法,可以接受Foo1
类,如下所示
public static <T> T convert(IFoo1 foo1, Class<T extends IFoo2> clz) {
T foo2 = clz.newInstance();
// Setter methods
return foo2;
}
但是我遇到了错误:令牌“扩展”,预期语法错误
类Foo1
和Foo2
都实现接口IFoo1
和IFoo2
。
答案 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