Java返回medhot中的ArrayList <myobject>,返回接口的ArrayList

时间:2017-11-22 15:14:26

标签: java generics interface

我有两个必须getMethodes的类,它们返回两个实现接口的对象的 ArrayList

public class MyClass1 implements IMyClasses<MyObject1>{

   public ArrayList<MyObject1> getMyObject() { ... }
}
public class MyClass2 implements IMyClasses<MyObject1>{

   public ArrayList<MyObject1> getMyObject() { ... }
}

MyObject1 MyObject2 实现 IMyObject

在我的 ManagerClass 中,我想实现一个可以返回任何 IMyObject 实现的函数

ArrayList<IMyObject) get() {
   if (...) {
         return new MyClass1().getMyObject();
   } else {
         return new MyClass2().getMyObject();
   }
}

在我在 MyClass1 MyClass2 上引入 Generic 典型之前,它运行良好,但是使用Generic我需要得到正确的对象如果需要,我不能返回具有返回类型接口的对象吗?

一些帮助?

编辑这是一个完整的工作示例,诀窍是{@ 1}} thx到@ Alexander.Furer

<? extend IMyObject>

1 个答案:

答案 0 :(得分:1)

ArrayList<MyObject1>不属于ArrayList<IMyObject>类型,顺便说一句,你有一个拼写错误:ArrayList<IMyObject)

将ManagerClass的get方法声明为:

ArrayList<? extends IMyObject> get() {
}