Java Generics — более сложный пример с наследованием и интерфейсомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java Generics — более сложный пример с наследованием и интерфейсом

Сообщение Anonymous »

Большинство руководств по Java по теме «Обобщенные шаблоны» объясняют работу с классами и методами. Это довольно просто.
Собрать все вместе в более сложный пример непросто. Я получаю ряд ошибок компиляции.
Можете ли вы помочь правильно понять этот сложный пример? Это может быть полезно и для других. Я также знаю, что BaseObjectData, конечно, неправильный.
Интерфейс:

Код: Выделить всё

public interface ComparatorBase {
List isSame(T otherObject);
}
С отличием:

Код: Выделить всё

public record Difference(String id, String left, String right) { }
Базовый класс (Ошибки: неизвестные методы: OtherObject.getId() или getObjectValue1()):

Код: Выделить всё

@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@Builder
public class BaseObjectData implements ComparatorBase {
private String id;
private String objectValue1;
private String objectValue2;

@Override
public List isSame(T otherObject) {
List differences = new ArrayList();
if( ! getObjectValue1().equals( otherObject.getObjectValue1())) {
differences.add( new Difference( getId(), getObjectValue1(), otherObject.getObjectValue1()));
}
if( ! getObjectValue2().equals( otherObject.getObjectValue2())) {
differences.add( new Difference( getId(), getObjectValue2(), otherObject.getObjectValue2()));
}
return differences;
}

T findMatchingObject( List otherObjects) {
for( T object: otherObjects) {
if( object.getId().equals( id)) {
return object;
}
}
return null;
}
}
Затем унаследованный класс: (Ошибка: неизвестный метод: OtherObject.getObjectValue3())

Код: Выделить всё

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class InheritLevel1Data extends BaseObjectData implements ComparatorBase {
private String objectValue3;

public InheritLevel1Data( String id, String d1, String d2, String d3) {
super( id, d1, d2);
this.objectValue3 = d3;
}
@Override
public List isSame(T otherObject) {
List differences = super.isSame( otherObject);
if( ! getObjectValue3().equals( otherObject.getObjectValue3())) {
differences.add( new Difference( getId(), getObjectValue3(), otherObject.getObjectValue3()));
}
return differences;
}
}
Тестовый класс:

Код: Выделить всё

public class RunnerTest {
private static final Logger logger = Logger.getLogger( "My logger");
public static void main(String[] args) {
List objectDataList1 = buildList( "id-1", "data-1", "data-2", "data-3b");
List objectDataList2 = buildList( "id-1", "data-1", "data-2a", "data-3");
List differences = new ArrayList();
for( BaseObjectData o: objectDataList1) {
BaseObjectData o2 = (BaseObjectData) o.findMatchingObject( objectDataList2);
differences.addAll( o.isSame( o2));
}
differences.forEach( v -> logger.info( "Verschil: " + v));
}

private static List buildList( String id, String data1, String data2, String data3) {
return List.of(
new BaseObjectData( "BO_" + id, data1, data2),
new InheritLevel1Data( "ID1_" + id, data1, data2, data3));
}
}
Выходные данные должны давать различия: данные-2 против данных-2a И данные-3a против данных-3 и т. д.

Подробнее здесь: https://stackoverflow.com/questions/781 ... -interface
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Пересылать пакеты между интерфейсом TUN и физическим интерфейсом
    Anonymous » » в форуме Linux
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • MongoDB не может использовать сложный объект в качестве ключа Java Java
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Проблема, связанная с множественным наследованием в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Проблема, связанная с множественным наследованием в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Проблема, связанная с множественным наследованием в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»