Я кое-что не могу понять, можно ли это сделать, и если да, то как.У меня есть куча объектов-значений (неизменяемые классы, которые обертывают скалярное значение, например строку, которая содержит логику проверки).Так, например, если у меня есть следующий базовый класс:
public class ScalarValueObject<T> {
private final T value;
protected ScalarValueObject(final T value) {
this.value = value;
}
public final T getValue() {
return value;
}
}
и объект значения на основе строки:
public class StringValueObject extends ScalarValueObject<String> {
protected StringValueObject(final String value) {
super(value);
}
public final String asString() {
return getValue();
}
}
и конкретный пример объекта значения на основе строки:
public final class IBAN extends StringValueObject {
public IBAN(final String iban) {
super(iban);
// check if the IBAN is valid
}
}
Теперь я использую Springfox и Swagger для документирования службы REST, которая использует эти объекты-значения.Если я ничего не сделаю, класс IBAN
будет задокументирован следующим образом:
Account {
iban: IBAN {...}
}
В то время как я хотел бы, чтобы документ был следующим:
Account: {
iban: string
}
Thisможет быть достигнуто с помощью .directModelSubstitute(IBAN.class, String.class)
для создания экземпляра Docket.Но очевидно, что всякий раз, когда я придумываю новый объект на основе строки, мне нужно будет добавлять его в конструкцию Docket.
Возможно ли захватить базовый класс и превратить его во все, что он представляет?В идеале на ScalarValueObject
, но даже на StringValueObject
было бы хорошо.