java使用ParameterizedType实现泛型

美女程序员鼓励师

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1、过程

(1)测试属性类型

(2)打印type与generic type的区别

(3)测试参数类型

(4)测试返回值类型

2、实例

public class Client {

 

    private Map<String, Object> objectMap;

 

    public void test(Map<String, User> map, String string) {

    }

 

    public Map<User, Bean> test() {

        return null;

    }

 

    /**

     * 测试属性类型

     *

     * @throws NoSuchFieldException

     */

    @Test

    public void testFieldType() throws NoSuchFieldException {

        Field field = Client.class.getDeclaredField("objectMap");

        Type gType = field.getGenericType();

        // 打印type与generic type的区别

        System.out.println(field.getType());

        System.out.println(gType);

        System.out.println("**************");

        if (gType instanceof ParameterizedType) {

            ParameterizedType pType = (ParameterizedType) gType;

            Type[] types = pType.getActualTypeArguments();

            for (Type type : types) {

                System.out.println(type.toString());

            }

        }

    }

 

    /**

     * 测试参数类型

     *

     * @throws NoSuchMethodException

     */

    @Test

    public void testParamType() throws NoSuchMethodException {

        Method testMethod = Client.class.getMethod("test", Map.class, String.class);

        Type[] parameterTypes = testMethod.getGenericParameterTypes();

        for (Type type : parameterTypes) {

            System.out.println("type -> " + type);

            if (type instanceof ParameterizedType) {

                Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments();

                for (Type actualType : actualTypes) {

                    System.out.println("\tactual type -> " + actualType);

                }

            }

        }

    }

 

    /**

     * 测试返回值类型

     *

     * @throws NoSuchMethodException

     */

    @Test

    public void testReturnType() throws NoSuchMethodException {

        Method testMethod = Client.class.getMethod("test");

        Type returnType = testMethod.getGenericReturnType();

        System.out.println("return type -> " + returnType);

 

        if (returnType instanceof ParameterizedType) {

            Type[] actualTypes = ((ParameterizedType) returnType).getActualTypeArguments();

            for (Type actualType : actualTypes) {

                System.out.println("\tactual type -> " + actualType);

            }

        }

    }

}

以上就是java使用ParameterizedType实现泛型的方法,希望能对大家有所帮助。更多Java学习指路:Java基础

以上是 java使用ParameterizedType实现泛型 的全部内容, 来源链接: utcz.com/z/543722.html

回到顶部