如何创建java.lang.reflect.Type
我有以下实施:如何创建java.lang.reflect.Type,java,Java,我有以下实施: public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) { if (!type.getTypeName().contains("TypeX")) { return false; } return true; } public boolean canWrite(类型类型、类类别、媒体类型){ 如
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
if (!type.getTypeName().contains("TypeX")) {
return false;
}
return true;
}
public boolean canWrite(类型类型、类类别、媒体类型){
如果(!type.getTypeName()包含(“TypeX”)){
返回false;
}
返回true;
}
我想测试这个方法,因此我需要传入一个类型参数
在我的测试中,如何为类型X的列表构造类型参数
Spring可以以某种方式填充类型,使其包含类型名List
。我想在测试中做同样的事情。既然您正在测试,
使用测试工具创建类型的模拟
与Mockito和JUnit一起,
这将看起来像这样:
@Mock
private java.lang.reflect.Type mockType;
@Before
private void beforeTest()
{
MockitoAnnotations.initMocks(this);
}
@Test
public void useTheMockTest()
{
... do your test.
}
最好的方法是在测试中创建所需类型的实例,并反射地提取type
对象:
public final class MyTest {
private final List<TypeX> listOfTypeX = null;
private final Type typeOfListOfTypeX = MyTest.class
.getDeclaredField("listOfTypeX")
.getGenericType();
}
你所说的构造类型参数是什么意思?@RomanC:由于所示的方法有一个类型为type
的参数,并且问题的标题是java.lang.reflect.type
,我假设OP正在寻求一种方法来构造类型为type
的对象作为参数传递,而不是构造“类型参数”指泛型类型或方法的参数。类型
对象需要在其等于
和哈希代码
实现周围具有特定的语义。我会尽可能避免模仿它们,因为这可能会使测试代码变得脆弱。
Type typeOfListOfTypeX = new TypeToken<List<TypeX>>() {}.getType();