sun.reflect.generics.reflectiveObjects.TypeVariableImpl Java Examples

The following examples show how to use sun.reflect.generics.reflectiveObjects.TypeVariableImpl. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SwaggerReader.java    From netty-rest with Apache License 2.0 6 votes vote down vote up
public static Type getActualType(Class readClass, Type parameterizedType)
{
    // if the parameter has a generic type, it will be read as Object
    // so we need to find the actual implementation and return that type.

    // the generic type may not come from the HttpService class, if it's not keep track of it:
    // ((TypeVariableImpl)parameters[2].getParameterizedType()).getGenericDeclaration().getTypeParameters()[0].getBounds()[0]
    if (parameterizedType instanceof TypeVariableImpl) {
        TypeVariable[] genericParameters = readClass.getSuperclass().getTypeParameters();
        Type[] implementations = ((ParameterizedTypeImpl) readClass.getGenericSuperclass()).getActualTypeArguments();
        for (int i = 0; i < genericParameters.length; i++) {
            if (genericParameters[i].getName().equals(((TypeVariableImpl) parameterizedType).getName())) {
                return implementations[i];
            }
        }
    }
    return parameterizedType;
}
 
Example #2
Source File: CSVApisUtilTest.java    From sofa-acts with Apache License 2.0 5 votes vote down vote up
/***
 * Test method for {@link CSVApisUtil#HandMutiParameType(Type, int)}
 */
@Test
public void testHandMutiParameType() {
    //class
    Type res = CSVApisUtil.HandMutiParameType(int.class, 0);
    Assert.assertEquals(res, int.class);

    res = CSVApisUtil.HandMutiParameType(int.class, 1);
    Assert.assertNotEquals(res, int.class);

    //ParameterizedType
    Map<String, String> map = new HashMap<String, String>(1);

    res = CSVApisUtil.HandMutiParameType(map.getClass().getGenericSuperclass(), 0);
    Assert.assertEquals(((TypeVariableImpl) res).getName(), "K");

    res = CSVApisUtil.HandMutiParameType(map.getClass().getGenericSuperclass(), 1);
    Assert.assertEquals(((TypeVariableImpl) res).getName(), "V");

    List<String> list = new ArrayList<String>(1);

    res = CSVApisUtil.HandMutiParameType(list.getClass().getGenericSuperclass(), 0);
    Assert.assertEquals(((TypeVariableImpl) res).getName(), "E");

    res = CSVApisUtil.HandMutiParameType(list.getClass().getGenericSuperclass(), 1);
    Assert.assertEquals(res, null);

}
 
Example #3
Source File: ClassFactory.java    From rest.vertx with Apache License 2.0 5 votes vote down vote up
public static boolean checkIfCompatibleType(Class<?> expected, Type actual) {

        if (expected == null) {
            return false;
        }

        if (actual == null) {
            return true;
        }

        if (expected.isPrimitive()) {
            actual = convertToPrimitiveType(actual);
        }

        if (actual instanceof ParameterizedType) {
            return expected.isAssignableFrom(((ParameterizedTypeImpl) actual).getRawType());
        }

        if (actual instanceof TypeVariableImpl) { // we don't know at this point ... generic type
            return true;
        }

        return expected.equals(actual) || expected.isInstance(actual) || ((Class<?>) actual).isAssignableFrom(expected);
    }