gpt4 book ai didi

java - 修复调用 Super 的 Java 类构造函数

转载 作者:太空狗 更新时间:2023-10-29 15:51:17 26 4
gpt4 key购买 nike

该代码是针对android的,但问题与Java相关我有一个派生类,我想创建列表并传递给 super 构造函数,同时在子类中保留引用

下面这段代码是我真正想要做的

public class AccountListAdapter extends ArrayAdapter<Account> {       
private List<Account> cuentas;
private Context context;
private AccountListStore loginstore;
public AccountListAdapter(Context context) {

loginstore = new AccountListStore(context);
try {
cuentas = loginstore.getAccounts();
} catch (SQLException e) {
cuentas = new ArrayList<>();
e.printStackTrace();
}
//What I wana but I know is not posible
super(context, R.layout.acount_listadapter, cuentas);
}

最佳答案

我猜@spa 的答案已经解决了你的问题。但在某些情况下,您需要构造一个超构造函数参数,但父类(super class)不会让您访问该值。

您可以通过创建一个静态辅助方法来构造参数值和从公共(public)构造函数调用的第二个私有(private)构造函数来解决此问题:

public class AccountListAdapter extends ArrayAdapter<Account> {       
private List<Account> cuentas;
private Context context;

private static List<Account> createCuentas(Context context)
{
AccountListStore loginstore = new AccountListStore(context);
try {
return loginstore.getAccounts();
} catch (SQLException e) {
e.printStackTrace();
return new ArrayList<>();
}
}

public AccountListAdapter(Context context) {
this(context, createCuentas(context));
}


private AccountListAdapter(Context context, List<Account> cuentas) {
super(context, R.layout.acount_listadapter, cuentas);
this.cuentas = cuentas;
}
}

关于java - 修复调用 Super 的 Java 类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166136/

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