Метод с примитивным аргументом, использующий PrivilegedAccessor

В моем Junit я пытаюсь выполнить метод, используя PrivilegedAccessor как следует, но получая NoSuchMethodException: Invalid Method getInsurance -

PrivilegedAccessor.invokeMethod(InsuranceRetriever,
                    "getInsurance", new Object[] { code}, new Class[] {
                            Long.class});

Ниже приводится описание протестированного метода.

private InsObj getInsurance(long code)

* Пожалуйста, обратите внимание, что здесь я передаю Long.class, тогда как реальный аргумент - примитивно длинный. Как передать примитивный аргумент.

1 ответ

Решение

Попробуй это:

PrivilegedAccessor.invokeMethod(InsuranceRetriever,
                "getInsurance", new Object[] { code }, 
                new Class[] { Long.TYPE });

Объяснение:

Объекты класса для примитивных типов находятся под статической конечной константой TYPE в каждом из объектов java.lang для каждого из примитивных типов. Boolean.TYPE, Integer.TYPE, Byte.TYPE, Short.TYPE, Long.TYPE и т.п.

Другие вопросы по тегам