insert into customer_keyskill(customerID, keySkillID)
select 2,1 from dual
where not exists (
select customerID from customer_keyskill
where customerID = 2
and keySkillID = 1 )
Нет , вы не можете сделать это на Java. Помимо всего прочего, d
предположительно будет экземпляром A
(учитывая обычное понятие «расширяет»), но пользователи, которые знали только о A
не стал бы
Рекомендуемое решение - шаблон расширяемого перечисления .
Это включает создание интерфейса и его использование там, где вы в настоящее время используете перечисление. Затем заставьте перечисление реализовать интерфейс. Вы можете добавить больше констант, сделав это новое перечисление также расширяющим интерфейс.
Перечисления представляют собой полное перечисление возможных значений. Так что (бесполезный) ответ - нет.
В качестве примера реальной проблемы возьмем рабочие дни, выходные дни и, вместе с тем, дни недели. Мы могли бы определить все дни в пределах дней недели, но тогда мы не смогли бы представить свойства, относящиеся ни к будним, ни к выходным дням.
Что мы могли бы сделать, так это иметь три типа перечислений с отображением между будними и выходными днями. -дни и дни недели.
public enum Weekday {
MON, TUE, WED, THU, FRI;
public DayOfWeek toDayOfWeek() { ... }
}
public enum WeekendDay {
SAT, SUN;
public DayOfWeek toDayOfWeek() { ... }
}
public enum DayOfWeek {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
В качестве альтернативы мы могли бы иметь открытый интерфейс для дня недели:
interface Day {
...
}
public enum Weekday implements Day {
MON, TUE, WED, THU, FRI;
}
public enum WeekendDay implements Day {
SAT, SUN;
}
Или мы могли бы объединить два подхода:
interface Day {
...
}
public enum Weekday implements Day {
MON, TUE, WED, THU, FRI;
public DayOfWeek toDayOfWeek() { ... }
}
public enum WeekendDay implements Day {
SAT, SUN;
public DayOfWeek toDayOfWeek() { ... }
}
public enum DayOfWeek {
MON, TUE, WED, THU, FRI, SAT, SUN;
public Day toDay() { ... }
}