簡體   English   中英

如何在數組列表模型類中訪問

[英]How to access in Array List model 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;
        }
    }
}

如果您已正確閱讀了該異常,那么您還將已閱讀了解決問題的方法。 您需要首先實例化CartOrder對象,然后才能在其上調用s.new Data() ,如下所示

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);
}

修改您現有的課程:

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;
        }
    }
}

類似的問題在這里

但是是的,您的代碼是准確的。 如果將成員屬性設為私有Data::name則除工廠類( class Data )外,其他任何屬性都無法訪問它。 您的其他函數及其成員也是如此。

我假設您想像這樣使用它:

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

為了使它起作用,您應該將內部類設為靜態,因此您的代碼將變為

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;
        }
    }
}

之后,您可以像這樣使用:

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));
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM