gpt4 book ai didi

java - 如何在java中创建自上而下的重载构造函数

转载 作者:行者123 更新时间:2023-12-02 10:08:30 25 4
gpt4 key购买 nike

我目前正在开发一个 android 项目,我想在其中创建一个具有动态数量参数的对象。

一个RequestOperation对象将始终具有属性 Type并且应该能够使用 0 到 3 个可选字符串属性来创建,这些属性存储在 ArrayList<String> 中名为 requestParams 的属性。

在编写构造函数时,我想到了以下想法:

是否可以创建“伪递归”构造函数,以便采用三个字符串的构造函数方法将第三个字符串添加到对象中并调用采用两个字符串的构造函数。这个会将第二个添加到对象中,然后调用采用一个字符串的构造函数,这将执行相同的操作,然后传递填充有 requestParams 的对象。 arraylist 到构造函数中,该构造函数不接受任何字符串,仅添加 Type属性。

这将使懒惰的程序员免于一遍又一遍地编写(实际上很长)构造函数。

这就是我的想象(高度简化):

public class RequestOperation {

public enum Type {
//enum values and mappings
}

private String applicationUrl;
private ArrayList<String> requestParams = new ArrayList<>();

public RequestOperation(Type operationType) {
this.applicationUrl = composeUrl(operationType, requestParams);
}

public RequestOperation(Type operationType, String paramFirst) {
this.requestParams.add(0, paramFirst);
new RequestOperation(operationType);
}

public RequestOperation(Type operationType, String paramFirst, String paramSecond) {
this.requestParams.add(0, paramSecond);
new RequestOperation(operationType, paramFirst);
}

public RequestOperation(Type operationType, String paramFirst, String paramSecond, String paramThird) {
this.requestParams.add(0, paramThird);
new RequestOperation(operationType, paramFirst, paramSecond);
}

使用这种方法,我担心我会在构造函数中创建一个新对象,并且参数会被写入错误的对象。是否有办法将对象本身传递为以下构造函数调用的目标?如果这是一个不好的方法,请告诉我,我仍在学习如何正确编程。

最佳答案

您可以以如下形式使用可变参数:

public RequestOperation(Type operationType, String... parameters) {
for(String param : parameters) {
requestParams.add(param);
}
}

这还有一个额外的好处,您还可以根据需要添加任意数量的请求参数。

编辑:正如 PPartisan 的评论中提到的,更简洁的方法是

public RequestOperation(Type operationType, String... parameters) {
requestParams = Arrays.asList(parameters);
}

关于java - 如何在java中创建自上而下的重载构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55164425/

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