리플렉션을 사용하여 개인 메서드를 테스트하고 싶습니다. 이 경우, Food
클래스의 isEdible
메소드.두 번째 매개 변수로 Class를 사용하는 getDeclaredMethod가 NoSuchMethodException을 throw하는 이유는 무엇입니까?
public class Food {
private Boolean isEdible() {
return true;
}
}
음식 클래스를 지정하지 않고 getDeclaredMethod
을 사용하는 경우 성공적으로 실행되었습니다.
@Test
public void foodTestOne() throws Exception {
Food food = new Food();
Method method = food.getClass().getDeclaredMethod("isEdible");
method.setAccessible(true);
boolean isEdible = (boolean) method.invoke(food);
assertTrue(isEdible);
}
하지만 내가 NoSuchMethodException
있어 두 번째 매개 변수에 Food
클래스를 추가 할 때.
@Test
public void foodTestTwo() throws Exception {
Food food = new Food();
Method method = food.getClass().getDeclaredMethod("isEdible", Food.class);
// execution stop here
}
내 질문은 :
- 내가 두 번째 매개 변수에 무엇을 넣어야 그것이 작동되도록하려면?
getDeclaredMethod("isEdible", Boolean.class)
을 변경하면 여전히 동일한 예외가 발생합니다. - 아주 기본적인 직관적 인 것처럼 보입니다. 왜 이런 일이 발생합니까?
'getDeclaredMethod()'에 대한 Javadoc을 읽었습니까? 'Class >'인수의 목적은 무엇입니까? –
죄송합니다. 이것은, javadoc * @ param 파라미터로 명확하게 설명되고 있습니다. 파라미터 배열을 타입합니다. 먼저 문서를 읽어야합니다. – aldok
요청하기 전에 Javadoc을 항상 읽으십시오. 당신은 그 과정에서 무언가를 배울 것입니다. –