返回任何类型的ArrayList

Rom*_*dgz 0 java list arraylist

我有一些ArrayList声明.其中一些是ArrayList<Integer>和其他人一样ArrayList<Double>.

我想从另一个类中获取它们,所以我写了一个方法:

private ArrayList<Double> list1, list2;
private ArrayList<Integer> list3;

    public ArrayList getList(String nameOfList){
        ArrayList myList = new ArrayList();
        if(nameOfList.equals("list1")) myList = list1;
        else if(nameOfList.equals("list2")) myList = list2;
        else if(nameOfList.equals("list3")) myList = list3;
        return myList;
    }
Run Code Online (Sandbox Code Playgroud)

编译,但引发了一些警告:

*ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized* in the method above, and *Type safety: The expression of type ArrayList needs unchecked conversion to conform to List<? extends Number>* when calling the method from here:

    XYSeries series = new SimpleXYSeries(data.getList("list1"), data.getList("list2"), "My chart");

where SimpleXYSeries is a chart whose constructor expects to be getting **(List<? extends Number>, List<? extends Number>, String)**.
Run Code Online (Sandbox Code Playgroud)

做我打算做的事情的正确方法是什么?

Eri*_*son 7

使用多种方法而不是一种上帝方法.

这是一个糟糕的设计,有一个getList方法使用a String来选择一个成员.相反,应该有多个方法 - 每个列表一个.然后每个方法都可以返回适合其列表的类型.

  • +1指出设计很差,应该重新考虑. (2认同)