Java 扩展模型的良好实践?

Java 扩展模型的良好实践?,java,android,performance,model,extend,Java,Android,Performance,Model,Extend,我在列表视图中使用以下模型: public class ListItem { private int _Id; private String Name; public ListItem() { this._Id = 0; this.Name = ""; } public ListItem(int Id, String Name) { this._Id = Id; this.Name =

我在列表视图中使用以下模型:

public class ListItem {
    private int _Id;
    private String Name;


    public ListItem() {
        this._Id = 0;
        this.Name = "";
    }

    public ListItem(int Id, String Name) {
        this._Id = Id;
        this.Name = Name;
    }
        public int getId() {
        return this._Id;
    }

    public void setId(int c) {
        this._Id = c;
    }

    public String getName() {
        return this.Name;
    }

    public void setName(String c) {
        this.Name = c;
    }
}
我有一些额外的数据将显示一旦他们点击项目,他们想查看。由于我从数据库中提取这些信息,并且我没有限制他们放入数据库中的项目数量,我想知道是否可以在另一个模型中扩展我的模型。类似于(如果这是编写扩展模型的错误方法,如果扩展模型不是什么大事,您可以纠正我):


这是个坏主意吗?如果我只使用不同的模型或一个模型,然后从列表中返回所需的数据,然后再获取其余的数据,会更好吗?我试图用它编写干净的代码,并且尽可能少地重复代码。我也希望我的代码高效且性能良好,但我不确定这是否是个好主意

看起来您没有使用所扩展的类中的大部分代码(变量和方法)。如果在创建ItemDetails对象时不需要显式获取ListItem对象(如
ListItem item=new ItemDetails();
),那么实际上没有理由扩展该类。在这种情况下,如果您不进行扩展,那么您的代码肯定更干净。

如果您想编写干净的代码,您应该了解构造函数调用ListItem构造函数,并且已经初始化了字段“\u Id”和“Name”,不建议在不需要更改它们的情况下重写方法。

您的代码编译了吗。我看到多个问题。为什么ListItem类构造函数是SpinnerItem()?在ItemDetails类弹药中相同?还有,为什么您需要这个列表?你可以直接访问这个。设置Id(0)你让我回答了前两个问题。我承认,我把这些放在一起是为了这个问题,我还没有在我的代码中真正实现它。现在应该更新它们。关于第三个问题,我只使用记事本,所以我想我应该花更多的时间写出来。问题是在实践中使用类似的东西。代码就在那里,这样你就能明白我要用这个。。。我的错,一个改正。您可以直接从ItemDetails中访问它。_Id=0,方法是将_Id声明为受保护。好的,我错过了受保护的部分,但修复了其余部分。如果我声明它受保护,我会很好,你认为这会起作用吗?还可以删除ItemDetailsO中_Id和Name的get/set方法,如果我在db表中有10个项目,如果我只想在listview中显示其中的3个或4个,但想在details活动/片段中显示所有项目,这将是一个好主意,但除此之外,它不是吗?在大多数情况下,我的想法是使用我扩展的表中的所有变量。我的意思是一般。现在,您已经更改了代码,这更有意义。如果您从ItemDetails中删除重写方法,这些方法与扩展类中的方法(如getName())的操作相同,那么在此处使用extend是有意义的。如果a是b的特化(b是a的推广),则通常从b类扩展a类。这与oop有关。例如,如果你有一个类“human”和一个类“student”,那么让student扩展human在语义上是有意义的。谢谢你的回答,但正如我之前所说,代码本身就是为了帮助人们理解我的问题。
public class ItemDetails extends ListItem {
    private String itemType, Manufacturer, Qty, Notes;
    public ItemDetails () {
        this._Id = 0;
        this.Name = "";
        this.itemType = "";
        this.Manufacturer = "";
        this.Qty = "";
        this.Notes = "";
    }
    public Ammo(int _Id, String name, String itemType,
            String manufacturer, String qty, String notes) {
        this._Id = _Id;
        this.Name = name;
        this.itemType = itemType;
        this.Manufacturer = manufacturer;
        this.Qty = qty;
        this.Notes = notes;
    }

    // Get Variables //
    public int get_Id() {
        return this._Id;
    }

    public String getName() {
        return this.Name;
    }

    public String getItemType() {
        return itemType;
    }

    public String getManufacturer() {
        return Manufacturer;
    }

    public String getQty() {
        return Qty;
    }

    public String getNotes() {
        return Notes;
    }

    // Set Variables //
    public void set_Id(int c) {
        this._Id(c);
    }

    public void setName(int c) {
        this.Name = c;
    }

    public void setItemType(String c) {
        itemType = c;
    }

    public void setManufacturer(String c) {
        Manufacturer = c;
    }

    public void setQty(String c) {
        Qty = c;
    }

    public void setNotes(String c) {
        Notes = c;
    }

}