通过反射获取泛型实际的类型

ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
//pt.getActualTypeArguments()获取的是泛型的数组,根据实体泛型所在位置取
Class modelClass = (Class) pt.getActualTypeArguments()[0];
//反射获取id的实际类型进行处理
    public Object cast(Object id) {
        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
        Class modelClass = (Class) pt.getActualTypeArguments()[1];
        Field id1 = null;
        try {
            id1 = modelClass.getDeclaredField("id");
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        Class type = id1.getType();
        if (type.getName().equals("java.lang.Long")) {
            id = Long.parseLong(id.toString());
        } else {
            id = id.toString();
        }
        return id;
    }

 

你可能感兴趣的:(反射)