这是我拥有的实用方法:
public static Class<?>[] getTypes(Object[] objects){
Class<?>[] types = new Class<?>[objects.length];
for (int i = 0; i < objects.length; i++) {
types[i] = objects[i].getClass();
}
return types;
}
这是一个失败的测试用例:
@Test
public void getTypesTest() {
Object[] objects = {"String", new StringBuilder(), new Integer(5), 5};
Class<?>[] classes = ReflectionUtils.getTypes(objects);
assertTrue(classes[0].equals(String.class));
assertTrue(classes[1].equals(StringBuilder.class));
assertTrue(classes[2].equals(Integer.class));
assertTrue(classes[3].equals(int.class)); // Fails here
}
我意识到,当我通过5
内部时Object[]
,这是 Boxed tonew Integer(5)
。
我怎样才能得到我期望的行为?
编辑
我的期望:在我的测试中失败的断言将通过。我应该如何使用被测方法来实现这一目标?: