如何创建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();