Поведение путаницы на методах по умолчанию в сочетании с размышлением, любые идеи? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Поведение путаницы на методах по умолчанию в сочетании с размышлением, любые идеи? [закрыто]

Сообщение Anonymous »

Я сталкиваюсь с проблемой при использовании Groovy в сочетании с последним Hapi fhir. Ссылка на класс реализует этот интерфейс и переопределяет метод. < /P>
testcase 1 и testcase 2 идентичны, существует только одно незначительное отличие, что в Testcase2. Приведен «getIdentitier», но просто делегируйте в супер метод. Отладчик показывает, что Testcase 1, отражение вызывает метод по умолчанию интерфейса (который возвращает NULL), а Testcase 2 вызывает GetIentifier класса. < /P>

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

import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.hl7.fhir.r4.model.BaseReference;
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Reference;
import org.junit.jupiter.api.Test;

public class ReflectionTestOnSuperMethods {

@Test
public void testJavaReflection1() throws NoSuchMethodException, SecurityException, IllegalAccessException, InvocationTargetException {
var example1 = new ExampleDto1();
Identifier id = new Identifier();
id.setValue("abc");
example1.setIdentifier(id);

Method method = BaseReference.class.getMethod("getIdentifier");
assertNotNull(example1.getIdentifier());
assertNotNull(method.invoke(example1, new Object[0]));
}

@Test
public void testJavaReflection2() throws NoSuchMethodException, SecurityException, IllegalAccessException, InvocationTargetException {
var example2 = new ExampleDto2();
Identifier id = new Identifier();
id.setValue("abc");
example2.setIdentifier(id);

Method method = BaseReference.class.getMethod("getIdentifier");
assertNotNull(example2.getIdentifier());
assertNotNull(method.invoke(example2, new Object[0]));
}

public static class ExampleDto1 extends Reference {
/*public Identifier getIdentifier() {
return super.getIdentifier();
}*/
}

public static class ExampleDto2 extends Reference {
public Identifier getIdentifier() {
return super.getIdentifier();
}
}

}

Проект TestCase теперь обменивается:
https://github.com/thopap/reflectiontest/образно (https://github.com/oehf/ipf). При попытке обновить Hapi FHIR 8.4, некоторые тестовых испытаний не проходят. После тренировки HAPI представляет метод по умолчанию в 8.4.

Подробнее здесь: https://stackoverflow.com/questions/797 ... tion-any-i
Ответить

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

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

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

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

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