doSomething
метод является частью класса MyTest
.Method::invoke
будет принимать три параметра:
- экземпляр класса
MyTest
, для которого будет вызван метод. - экземпляр
AtomicReference
- экземпляр
ClassB
Так что это должно выглядеть так:
public void testOptional() throws NoSuchMethodException, InvocationTargetException,
IllegalAccessException, InvocationTargetException {
AtomicReference<ClassA> atomicReference = new AtomicReference<>(new ClassA());
ClassB classB = new ClassB();
MyTest myTest = new MyTest(); // here we create the object
Method method = MyTest.class.getDeclaredMethod("doSomething", AtomicReference.class, ClassB.class);
method.setAccessible(true);
method.invoke(myTest, atomicReference, classB); //we invoke doSomething on myTest object with parameters
}
Также имейте в виду, что генерики стираются во время компиляции.Таким образом, каждый универсальный тип является Object
во время выполнения.