如何在对象数组列表中存储具有自己的数据类型的List

时间:2015-04-29 12:27:44

标签: java arrays list object casting

我有一个List listObject,我想为listObject的每个对象存储一个List pointListForObject。 我怎样才能使它发挥作用?

class Points {
    private int start;
    private int stop;

    public Points() {
        start = 0;
        stop = 0;
    }

    setter and getter... 
 }

 List<Object[]> listObject = new ArrayList<Object[]>;
 List<Points> pointListForObject = new ArrayList<Points>;
    ...
    Points point= new Point();
    point.setStart(1);
    point.setStop(2);

    pointListForObject.add(point);
    listObject.get(0)[1] = pointListForObject;

现在我想在另一种方法中获得积分,但我不知道如何以正确的方式进行转换或转换。 我的想法是:

List<Points> usePointsOfObject = (List<Points>) listObject.get(0)[1];

在这里,我得到一个: 线程"main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

中的异常

我尝试了不同的可能性(投射或转换)我知道但它不起作用 我没有想法..

2 个答案:

答案 0 :(得分:0)

pointListForObject.add(点);

你应该有 Object [] objArr = list.toArray(new Object [pointListForObject.size()]);

然后 listObject.add(objArr);

答案 1 :(得分:0)

现在我解决了我的问题

std::unique_ptr<SpecialReader> myReader;
myReader = SpecialReader::Create(filename);
if(!myReader.get()) {
    // Error handling, Create() couldn't create an instance of SpecialReader
}

将列表存储在数组对象中

class Points {
    private int start;
    private int stop;

    public Points() {
        start = 0;
        stop = 0;
    }

    setter and getter... 
 }

 List<Object[]> listObject = new ArrayList<Object[]>;
 List<Points> pointListForObject = new ArrayList<Points>;
    ...
    Points point= new Point();
    point.setStart(1);
    point.setStop(2);

从数组对象恢复列表并将其用作列表

 pointListForObject.add(point);
            Object ob = pointListForObject;
            listObject.get(0)[1] = ob;

感谢您帮助和分享您的知识和时间!