0

This is array list model class. Is it right or wrong? I can not access this class from another class

public class CartOrder {
    List<CartOrder.Data> data;

    public List<Data> getData() {
        return data;
    }

    public void setData(List<Data> data) {
        this.data = data;
    }

    class Data {
        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
XtremeBaumer
  • 6,275
  • 3
  • 19
  • 65
Areyen
  • 13
  • 6

3 Answers3

1

If you would have read the exception properly, then you would have also read the solution to your problem. You need to instantiate CartOrder object first on which you then can call s.new Data() as seen below

public static void main(String[] args) {
    CartOrder s = new CartOrder();
    Data d = s.new Data();
    d.setName("Test");
    s.addData(d);
    System.out.println(s);
}

Modified your existing class:

public class CartOrder  {
    List<Data> data;

    public CartOrder () {
        data = new ArrayList<Data>();
    }

    public List<Data> getData() {
        return data;
    }

    public void setData(List<Data> data) {
        this.data = data;
    }

    public void addData(Data data) {
        this.data.add(data);
    }

    class Data {
        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
XtremeBaumer
  • 6,275
  • 3
  • 19
  • 65
0

similar question here

But yes your code is accurate. If you make your member property private Data::name then it cannot be accessed by anything but the factory class (class Data). Same would be true for your other function and its member.

chasester
  • 9
  • 5
0

I'm assuming you want to use it like:

CartOrder.Data data = new CartOrder.Data();

In order for that to work you should make you inner class static, so you code would become

public class CartOrder {
    List<CartOrder.Data> data;

    public List<Data> getData() {
        return data;
    }

    public void setData(List<Data> data) {
        this.data = data;
    }

    static class Data {
        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

After that you can use this like:

public void someMethodInSomeOtherClass() {
    // ...
    CartOrder cartOrder = new CartOrder();

    CartOrder.Data someData = new CartOrder.Data();
    someData.setName("Luke");

    CartOrder.Data moreData = new CartOrder.Data();
    moreData.setName("Han");

    cartOrder.setData(Arrays.asList(someData, moreData));
    // ...
}
Norbert Bicsi
  • 1,562
  • 2
  • 19
  • 33