小编Sir*_*ncy的帖子

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

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

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)

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

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

提前致谢.

java eclipse

4
推荐指数
1
解决办法
6596
查看次数

Class.forName()和ClassNotFoundException

说我有以下两个类:

public class MyClass {
    public String getDescription() {
        return "MyClass";
    }
}
Run Code Online (Sandbox Code Playgroud)

public class MyClassLoader {
    public static void main (String[] argv) throws ClassNotFoundException {
        Class.forName("MyClass");
        System.out.println("MyClass class was successfully loaded");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这两个类都在默认包中,它运行正常,类加载,世界是美丽的.(如果我要删除课程MyClass,我会ClassNotFoundException按预期得到一个.

但是,如果它们都在一个包中(假设它是Eclipse中的一个包),并且有

package myClassTestPackage;
Run Code Online (Sandbox Code Playgroud)

在两者中声明,ClassNotFoundException当我尝试运行它时,我得到了一个.

导致此问题的原因是什么?如何解决?这是我能够重现我在一个更大的程序中遇到的错误的最简单方法.

java exception classloader

2
推荐指数
1
解决办法
2089
查看次数

标签 统计

java ×2

classloader ×1

eclipse ×1

exception ×1