У меня есть два класса, использующие аннотации для определения связей между полями и именами столбцов базы данных. Эти классы очень похожи на имя столбца, они определяют, кроме:Значение аннотации параметра Parametrize
class TableA {
@ForeignName("IDTableA") // Column name in TableC referring to this TableA record
List<TableC> elements;
// Some other field definitions, common between TableA and TableB
// Some other field definitions, specific to TableA
}
class TableB {
@ForeignName("IDTableB") // Column name in TableC referring to this TableB record
List<TableC> elements;
// Some other field definitions, common between TableA and TableB
// Some other field definitions, specific to TableB
}
class TableC {
@LocalName("IDTableA")
TableA refA;
@LocalName("IDTableB")
TableB refB;
}
Я хотел бы иметь супер-класс, к которому я мог бы дать постоянную "IDTableA/B"
. В идеале «что-то вроде» (я знаю, что вы не можете ничего другого, чем типы дженериков дать, но только, чтобы сделать мою точку):
abstract class TableAB<IDName> {
@ForeignName(IDName)
List<TableC> elements;
// Field definitions common between TableA and TableB
}
class TableA extends TableAB<"IDTableA"> {
// Field definitions, specific to TableA
}
class TableB extends TableAB<"IDTableB"> {
// Field definitions, specific to TableB
}
Это как-то можно?
OK тогда. Я знаю, что вы не можете давать ничего, кроме типов, для дженериков, но для меня было бы целесообразно «если» то, что я хотел сделать, было бы возможно. Я уточню вопрос, чтобы сделать его более ясным. Благодаря! – Matthieu
Ну, проблема связана с тем, что @ForeignName (IDName) нуждается в постоянном выражении для IDName. Вы не можете заставить это постоянное выражение быть как-то динамичным и в зависимости от подкласса. – Kayaman
ОК. Тогда я найду другой путь. Подождите 5 минут, прежде чем принимать ответ. ;) – Matthieu