У меня есть следующий метод build
, определенный в другом классе, который в основном использует два класса PD.java
и SD.java
, как указано ниже. Код метода заключается в следующем:Доступ к методам, которые не определены
protected String build(final PD pd) {
if (pd == null || pd.getField() == null) {
return null;
} else {
return " ORDER BY " + pd.getFieldName() + ' ' + pd.getDirection().getCommand();
}
}
Мои вопросы:
Как показано на PD.java
ниже, он getDirection()
метод, определенный в нем, но не getCommand()
. Метод getCommand()
определен в SD.java
. Следовательно, мне интересно, если в приведенном выше методе build
следующий способ доступа к методу правильный или нет?
pd.getDirection().getCommand();
Пожалуйста, обратите внимание на следующие классы:
Класс Имя: SD.java
public enum SD implements MappableEnum<SD> {
ASCENDING("A", "Ascending", "ASC"),
DESCENDING("D", "Descending", "DESC"),
;
private final String code;
private final String description;
private final String command;
private static final Map<String, SD> CODE_MAP =
MappableEnumUtil.buildCodeMap(SD.class);
private SD(final String code, final String description, final String command) {
this.code = code;
this.description = description;
this.command = command;
}
@JsonValue
@Override
public String getCode() {
return code;
}
@Override
public String getDescription() {
return description;
}
@Override
public SD toEnum(final String code) {
return fromCode(code);
}
public String getCommand() {
return command;
}
@JsonCreator
public static SD fromCode(final String code) {
return CODE_MAP.get(code);
}
public static SD fromCode(final char code) {
return fromCode(String.valueOf(code));
}
}
Название Класс: PD.java
public class PD<F extends SF> {
private final F field;
private final Integer limit;
private final Integer offset;
private final SD direction;
public PD(final F field, final Integer limit, final Integer offset, final SD direction) {
this.field = field;
this.limit = limit;
this.offset = offset;
this.direction = direction;
}
public F getField() {
return field;
}
public String getFieldName() {
return field.getColumnName();
}
public Integer getLimit() {
return limit;
}
public Integer getOffset() {
return offset;
}
public SD getDirection() {
return direction;
}
}
Скомпилирует? –
@MiserableVariable Да, это так. ошибок компиляции нет. Вы видите что-то не так с вышеуказанным кодом? – John
Извините, я сначала неправильно прочитал код. Кажется прекрасным, сталкиваются с какими-либо проблемами? SD - это общий класс, но вы не зависите от параметра типа, поэтому он должен быть в порядке. (подсказка: для публикации вопроса попробуйте создать наименьший образец кода, который демонстрирует проблему.) –