代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

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

  •  -5
  • fastcodejava  · 技术社区  · 6 年前

    我有两节课 Foo1 Foo2 非常相似的领域。 食物1

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

    两个班级 食物1 实现接口 IFoo1 IFoo2 .

    1 回复  |  直到 6 年前
        1
  •  3
  •   KG6ZVP    6 年前

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

    将方法声明更改为:

    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