我在android / java编程中遇到了一些问题。我想声明一个可以包含任何类类型的arraylist。我的数组列表变量看起来像这样。 私有ArrayList transactionList;
我有各种类别,例如收入类,借方类,信用卡类,事件类。这些类具有自己的get和set方法。 即时通讯从数据库中读取数据并调用我的set方法,然后将该类对象添加到我的arraylist中。例如 Cursor data = connectionDB.getListContents(selectQuery);
Income income;
transactionList = new ArrayList<Income>();
transactionList.clear();
while (data.moveToNext()) {
income = new Income();
income.setIncomeAmount(data.getString(0));
income.setFrequency(data.getString(1));
income.setDatePaid(data.getString(2));
income.setCategory(data.getString(3));
income.setDepositTo(data.getString(4));
income.setDescription(data.getString(5));
income.setRecordSetId(data.getString(6));
income.setRowid(data.getString(7));
income.setStatus(data.getString(8));
income.setColumnValues(
data.getColumnName(0)
, data.getColumnName(1)
, data.getColumnName(2)
, data.getColumnName(3)
, data.getColumnName(4)
, data.getColumnName(5)
, data.getColumnName(6)
, data.getColumnName(7)
, data.getColumnName(8)
);
transactionList.add(income);
}
如您在上面看到的,我正在创建一个新的收入数组列表
transactionList = new ArrayList<Income>();
,但是将Studio收入增加到android studio时会出错,例如 transactionList.add(收入); “ arrayArrayList中的添加(捕获)无法应用于(com.finsec.Income)”
我搜索了其他帖子,但找不到我要的答案。 我想完成两件事 1.声明任何类类型的arraylist并添加到arraylist中。例如
Income income = new Income();
transactionList = new ArrayList<Income>();
transactionList.add(income);
Debit debit= new Debit();
transactionList = new ArrayList<Debit>();
transactionList.add(debit);
Events events= new Events();
transactionList = new ArrayList<Events>();
transactionList.add(events);
我想将数组列表传递给函数 print_arraylist(transactionList)
我不确定如何在函数中声明参数
我假设是public void transactionList(ArrayList list)
在函数内部使用instanceOf。不确定
有人可以帮助我,让我知道如何实现任何类的arraylist并能够添加到arraylist并将该arralist传递给函数吗?预先感谢
答案 0 :(得分:0)
您应该像这样定义ArrayList变量:
ArrayList<Income> a = new ArrayList<Income>();
ArrayList<debit> b = new ArrayList<debit>();
如果要将通用数组列表传递给函数,可以这样做:
public void yourFun(ArrayList<?> arrayList, Class<Income> type) {
for (Object o : arrayList) {
if (o != null && o.getClass() == type) {
//do something
}
}
}
并调用如下函数:
ArrayList<Income> transactionList = new ArrayList<Income>();
Income obj = new Income();
transactionList.add(obj);
yourFun(transactionList, Income.class);
答案 1 :(得分:0)
2。
void print_transactions(ArrayList transactionList)
{
for (Object obj : transactionList) {
System.out.println(obj.toString());
}
}
您可以在每个类中覆盖“ public String toString()...”,以完全按照您希望的方式显示它。如果出于某种原因不想使用“ toString()”,则需要定义所有这些类都使用的基类或接口,并且该接口将定义“ transactionToString()”方法,并且所有类将需要实现它。