将子类项添加到超类的ArrayList时出错

Sir*_*ncy 4 java eclipse

我有一个带有几个子类的超类.

public abstract class SuperClass {
}

public class SubClass1 extends SuperClass {
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个ArrayList来包含SuperClass类型的对象.

private ArrayList<SuperClass> list = new ArrayList<SuperClass>();
Run Code Online (Sandbox Code Playgroud)

我在Eclipse中看到的错误有几个.
首先,任何添加子类对象的尝试都有错误:

SubClass1 object;
object = new SubClass1(parameters);

list.add(object)  //I get error: The method add(SuperClass) in the type 
                  //ArrayList<SuperClass> is not applicable for the arguments 
                  //(SubClass1)
Run Code Online (Sandbox Code Playgroud)

稍后在代码中,当我尝试将一种类型转换为另一种类型时,我会遇到更多问题:

for (SuperClass obj : list){
    if (obj instanceof SubClass1){ //This gets an error like this:
         ....                      //Incompatible conditional operand types
    }                              // SuperClass and SubClass1
Run Code Online (Sandbox Code Playgroud)

更不用说我正在调用的一些方法在超类中明确定义,类型未定义.我在这里敲我的头.我完全不知道问题是什么.

如果你们有人可能指出我可能的方向,我会非常感激.我不知道我是否提供了足够的信息,所以请提出您认为可能适用的任何问题.

提前致谢.

CKi*_*ing 5

在查看了所有其他答案和您的问题之后,对于这种行为,唯一可能的原因是您有两个SubClass1类文件.SubClass1扩展SuperClass的一个,而不扩展SuperClass的一个.尝试在ArrayList中插入SubClass1的类似乎使用后面的类文件.出于同样的原因,超类方法没有出现在子类实例上.

检查导入并确保使用的是正确版本的SubClass1.

如果上述方法无法解决问题,则您的java源文件和.class文件也可能不同步.删除eclipse项目中的bin文件夹并再次构建项目.您还可以清理和构建项目,以确保没有任何不同步.