У меня есть 4 отдельные таблицы BigQuery, которые необходимо заполнить. Я создал абстрактный класс BaseBQTable, который расширяют эти другие таблицы.
В моем конвейере Beam я принимаю абстрактный класс в качестве входных данных, а в DynamicDestination я пытаюсь использовать его методы для генерации истинной схемы, пунктов назначения из дочерних классов.
Вот код:
BQTableMessages.apply("Push to Bigquery", BigQueryIO.write()
.to(new DynamicDestinations<BaseBQTable, BaseBQTable>() {
public BaseBQTable getDestination(ValueInSingleWindow<BaseBQTable> element) {
return element.getValue();
}
public TableDestination getTable(BaseBQTable tableObj) {
String s = tableObj.toString();
TableDestination mydestination = tableObj.getTableDestination();
// Maybe it doesn't like using the method above because it itself is an abstract class
return mydestination;
}
public TableSchema getSchema(BaseBQTable tableObj) {
return null;
}
})
Если я закомментирую строку, где я использую метод getTableDestination
, или заменим на return null
, intelliJ не жалуется.
Однако, как это я получаю эту смутную ошибку;
Не удается разрешить метод
'to (анонимный org.apache.DynamicDestination, bqpackage.BaseBQTable, bqpackage.BaseBQTable>'
У меня такое ощущение, что ему не нравится тот факт, что элемент ввода является абстрактным классом, но я относительно новичок в Java.
Любые предложения с благодарностью!
Спасибо