gpt4 book ai didi

当涉及泛型(特别是 List)时,通过继承重用 Java 代码?

转载 作者:行者123 更新时间:2023-11-30 04:51:20 24 4
gpt4 key购买 nike

除了如何“使用它们”之外,我对泛型知之甚少。在我的应用程序中,我有各种 ListView Activity,它们似乎共享相似的方法和变量,并且在执行的步骤都非常相同的意义上具有完全相同的“算法”。

例如,在我的 onCreate 方法中,我调用了一个方法来添加页脚,启动一个进度对话框,调用一个方法来获取基于 xml url 的内容,并且有一个 Handler 和 Runnable 字段用于调用该方法以xml解析完成后,为列表填充数据。

我在想也许我可以创建一个 BaseListActivity 来完成所有这些事情/对所有这些事情都有方法,并且每个特定的 ListActivity 都可以从中扩展。问题是他们使用 List 对象来保存 xml 解析的项目以及 ListAdapter 支持的项目。

下面是所用字段的代码:

// list of games from xml
private List<Game> mGames = new ArrayList<Game>();
private List<Game> mNewGames = null;

// Need handler for callbacks to the UI thread
private final Handler mHandler = new Handler();

// Create runnable for posting
final Runnable mUpdateResults = new Runnable() {
public void run() {
mGames.addAll(mNewGames);
fillData();
}
};

LayoutInflater mInflater = null;
private ProgressDialog mProgressDialog = null;
private int currentPage = 0;

所以真正的主要区别在于每个不同的 Activity 会为列表使用不同的对象类型(即游戏、媒体、文章等)。我该怎么做呢?

最佳答案

我在想这样的事情:

public abstract class BaseListActivity<T> extends ListViewActivity {
private List<T> mItems;

protected abstract List<T> readAllFromXML();
...

}

参数 T 代表列表 Activity 实现所使用的实际类型。例如,派生类可能如下所示:

public TexyListActivity extends BaseListActivity<String> {
protected List<String> readAllFromXML() {
....
}
...
}

readAllFromXML 方法留给子类来实现,因为每个实现都为列表实例化不同的对象类型,因此它使用不同的逻辑从 XML 创建它们。

关于当涉及泛型(特别是 List)时,通过继承重用 Java 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3244524/

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