Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型异常_Java_Eclipse_Generics_Netbeans_Nullpointerexception - Fatal编程技术网

Java泛型异常

Java泛型异常,java,eclipse,generics,netbeans,nullpointerexception,Java,Eclipse,Generics,Netbeans,Nullpointerexception,我有两门课,随机获取列表和驱动程序。RandomAcquinableList扩展了ArrayList并实现了RandomAcquinable(只包含2个抽象方法)并实现了这些方法 但是,当我运行Driver类时,它会说在Diver类中main方法的第二行有一个NullPointerException(整数I=…)。我不明白为什么它会抛出这个异常,因为这两个类在我看来都很好 public class RandomObtainableList<E> extends ArrayList&l

我有两门课,
随机获取列表
驱动程序
。RandomAcquinableList扩展了ArrayList并实现了RandomAcquinable(只包含2个抽象方法)并实现了这些方法

但是,当我运行Driver类时,它会说在Diver类中main方法的第二行有一个NullPointerException(整数I=…)。我不明白为什么它会抛出这个异常,因为这两个类在我看来都很好

public class RandomObtainableList<E> extends ArrayList<E> implements RandomObtainable<E> {

    private Random random;

    public RandomObtainableList() {
        super();
        random = new Random(); 
    }

    @Override
    public E getRandom() throws NoSuchElementException {
        //returns an element randomly selected from the collection
        E e = this.get(random.nextInt(this.size()));
        return e; 
    }

    @Override
    public boolean removeRandom() throws UnsupportedOperationException {
        //try to remove a random element from the collection
        boolean b = false;
        int size = this.size();

        if (size != 0){
            E e = this.remove(random.nextInt(this.size()));
            b = true;
        }

        return b; 
    }
}

驱动程序必须在未定义的默认构造函数中初始化列表,以便将其作为空的默认构造函数:

public Driver() {
   // empty constructor
}
要获得预期的结果,您的驱动程序类将是:

public class Driver {
    private static RandomObtainableList<Integer> list;

    public Driver() {
        list = new RandomObtainableList<>();
        list.add(1);
        list.add(2);
    }

    public RandomObtainableList getList() {
        return this.list;
    } 
}

公共void驱动程序只是一个函数,而不是构造函数。所以RandomAcquinableList没有创建。谢谢你是对的!!
public class Driver {
    private static RandomObtainableList<Integer> list;

    public Driver() {
        list = new RandomObtainableList<>();
        list.add(1);
        list.add(2);
    }

    public RandomObtainableList getList() {
        return this.list;
    } 
}
public class Main {

    public static void main(String[] args){
        Driver d = new Driver();
        Integer i = list.getRandom();
        boolean b = list.removeRandom();

        System.out.println("Element retrieved: " +i);
        System.out.println("Element removed: " +b);
    }
}