gpt4 book ai didi

java - 避免将 null 作为参数传递给构造函数

转载 作者:行者123 更新时间:2023-12-02 03:06:43 25 4
gpt4 key购买 nike

我在一个名为 DownloadImageAsyncTask.java 的单独文件中有一个 AsyncTask,并且我正在与 context 一起传递一个 ImageView 作为构造函数的参数。当 AsyncTask 进入 onPostExecute() 方法时,它将图像分配给 ImageView

后来我意识到我需要对应用程序的另一部分使用相同的代码,但我需要将其作为背景图像分配给 FrameLayout,而不是将图像分配给 ImageView .

由于重复是编程中许多错误的根源,我如何重用 AsyncTask 以便它可以处理这两种情况并避免复制/粘贴代码?

我尝试使用如下构造函数:

public DownloadImageAsyncTask(Context context, ImageView ivCover, FrameLayout flCover) {
this.context = context;
this.ivCover = ivCover;
this.flCover = flCover;
}

我将ImageViewFrameLayout设置为null,但这对我来说感觉不对。 (因为我知道我们应该避免将 null 作为参数传递)

有什么想法吗?

最佳答案

您可以在 DownloadImageAsyncTask 类中使用所谓的重载构造函数。这与如何拥有多个具有相同名称但采用不同参数的方法非常相似。

public DownloadImageAsyncTask(Context context, ImageView ivCover) 
{
this.context = context;
this.ivCover = ivCover;
}

public DownloadImageAsyncTask(Context context, FrameLayout flCover)
{
this.context = context;
this.flCover = flCover;
}

要检查结果变量的运行实例,您可以执行以下操作,尽管您可能还想添加一些 null 检查

if(result instanceOf ImageView)
{
// do stuff
}
else if(result instanceOf FrameLayout)
{
// do stuff
}
else
{
// do other stuff
}

关于java - 避免将 null 作为参数传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621359/

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