gpt4 book ai didi

java - 将 ArrayList 中的 留给类来决定

转载 作者:行者123 更新时间:2023-12-01 17:20:35 25 4
gpt4 key购买 nike

我的应用程序中有一个数据库表处理程序的接口(interface)。其中一种方法如下所示:

void add(ArrayList<? extends BaseObject> object);

根据实现的类,我希望具有不同的元素。

例如,在我的一门类(class)中,我想要以下内容:

@Override
public void add(List<Category> object) {

}

这个类看起来像这样:

public class Category_Handler extends SQLiteOpenHelper implements HandlerInterface{

}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}


@Override
public void add(ArrayList<Category> object) {
//Preparing the database variables
SQLiteDatabase db = this.getWritableDatabase();

for(int i = 0; i > objects.size(); i++){
//Getting the values for the Category
String name = objects.get(i).getName();
int subCategory = objects.get(i).getSubCat();

if (db != null) {
ContentValues cv = new ContentValues();

//Adding values
cv.put(Category_DAO.KEY_CATEGORY_NAME, name);
cv.put(Category_DAO.KEY_SUBCATEGORY_TO, subCategory);

//Finnish the insertion
db.insert(Category_DAO.TABLE_NAME, null, cv);

}
}
db.close();
}

@Override
public void remove(int id) {

}

@Override
public void edit(int id, ArrayList<Category> values) {

}

类别看起来像这样

public class Category extends BaseObject{
private String name;
private int subCat;

public String getName() {
return name;
}

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

public int getSubCat() {
return subCat;
}

public void setSubCat(int subCat) {
this.subCat = subCat;
}

}

我现在面临的问题是,当我更改为时,我收到一条错误消息,指出“方法不会覆盖其父类(super class)中的方法。

谁知道有什么办法可以解决这个问题吗?有可能有这样的解决方案吗?

最佳答案

然后需要绑定(bind)类型,不能使用通配符?。

我们需要查看更多代码,但也许类似

class DatabaseTableHandler<E extends BaseObject>{

public void add(List<E> object){}

}

然后你就可以做

class CategoryHandler extends DatabaseHandler<Category>{

@Override
public void add(List<Category> object) {}

}

但是,如果这个方法执行了它看起来正在执行的操作(添加列表中的所有内容),则签名可能应该是

      public void addAll(List<? extends E> object){}

这样您也可以接受List<SubCategory> 。 java.util.Collection#addAll 也可以这样工作。

关于java - 将 ArrayList 中的 <E> 留给类来决定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com