В настоящее время я работаю над проектом Android, где я хочу создать объект с динамическим числом параметров.
Объект RequestOperation
всегда будет иметь атрибут Type
и может быть создан с 0–3 необязательными строковыми атрибутами, которые хранятся в атрибуте ArrayList<String>
с именем requestParams
.
При написании конструкторов мне пришла в голову следующая идея:
Можно ли создать конструкторы "псевдо-рекурсивные", чтобы метод конструктора, который принимает три строки, добавляет3-й объект к объекту и вызывает конструктор, который принимает две строки.Это добавит 2-й объект к объекту, а затем вызовет конструктор, который принимает одну строку, которая будет делать то же самое, а затем передает объект с заполненным массивом requestParams
конструктору, который не принимает строки и просто добавляет 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);
}
При таком подходе я боюсь, что я создам новый объект внутри конструкторов, а параметры будут записаны внеправильные объекты.Есть ли случайно способ передать сам объект в качестве цели следующего вызова конструктора?Если это плохой подход, пожалуйста, дайте мне знать, я все еще учусь, как правильно программировать.