gpt4 book ai didi

java - 如何在Java中通过相同的参数创建多个构造函数

转载 作者:行者123 更新时间:2023-12-01 16:49:28 25 4
gpt4 key购买 nike

如何解决这个问题

如何更改代码以获得相同的结果

public class myClass
{

List<Drawable> d;
List<Bitmap> b;
public myClass(Integer[] resIDsList)
{
...
}

public myClass(List<? extends Drawable> drawableList) // error occure here
{
d = drawableList;
}

public myClass(List<? extends Bitmap> bitmapList) // and here too
{
b = bitmapList;
}

}

构造函数是否与上面相同?

最佳答案

定义静态工厂方法,并将构造函数设为私有(private):

static myClass fromDrawables(List<? extends Drawable> list) {
return new myClass(list, null);
}

static myClass fromBitmaps(List<? extends Bitmap> list) {
return new myClass(null, list);
}

private myClass(List<? extends Drawable> drawables, List<? extends Bitmap> bitmaps) {
// ...
}

(您可能想为 myClass(Integer[]) 案例添加另一个工厂方法;但我希望您了解如何为此扩展上述代码)。

现在您将调用工厂方法,而不是构造函数:

// Not new myClass(...)
myClass a = myClass.fromDrawables(drawablesList);
myClass b = myClass.fromBitmaps(bitmapsList);

我建议阅读Effective Java 第二版第 1 项:“考虑静态工厂方法而不是构造函数”,以深入讨论此方法。

关于java - 如何在Java中通过相同的参数创建多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441832/

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