Class<T> 泛型获取T的class

引用地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/11246354.html

getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type
然后将其转换ParameterizedType。
getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。
[0]就是这个数组中第一个了。
简而言之就是获得超类的泛型参数的实际类型。

1
2
3
4
5
6
7
8
public class GenericDAO<T> {
    private Class<T> entityClass;
    protected GenericDAO() {
        Type type = getClass().getGenericSuperclass();
        Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0];
        this.entityClass = (Class<T>) trueType;
    }
}

子类

1
2
public class OptionManager extends GenericDAO<MSGC_OPTION> {
}

测试类

1
2
3
4
5
public class OracleTest {
    public static void main(String[] args) throws Exception {
        OptionManager manager = new OptionManager();
    }
}

 

这样在你new OptionManager();以后超类里的entityClass就是子类那里的public class OptionManager extends GenericDAO<MSGC_OPTION> 里面的MSGC_OPTION所对应的class对象了..

 

 

restTemplate 返回List方式小结

 

HTTP GET(一)方式:

复制代码
public List<UtMerFeedback> findUtMerFeedbackListByMerid(String merid) {
        HttpHeaders headers = new HttpHeaders();
        headers.set("Accept", "application/json");
        HttpEntity entity = new HttpEntity(headers);
        Map<String, String> params = new HashMap<String, String>();
        params.put("merid", merid);
        String url = restServerAdd + "/merchants/findUtMerFeedbackListByMerid?merid="+merid;
        ParameterizedTypeReference<List<UtMerFeedback>> responseType = new ParameterizedTypeReference<List<UtMerFeedback>>() {};
        ResponseEntity<List<UtMerFeedback>> resp = restTemplate.exchange(url, HttpMethod.GET, entity, responseType,params);
        List<UtMerFeedback> list = resp.getBody();
        return list;
    }
复制代码

HTTP GET(二)方式(查询结果不能编辑):

    public List<UtProjectOnly> getProjectList() {
        String url = restServerAdd + "/project/getProjectList";
        UtProjectOnly[] model = restTemplate.getForObject(url, UtProjectOnly[].class);
        return Arrays.asList(model);
    }

HTTP POST方式:

复制代码
public List<UtProjectAtt> getProjectFileList(String pid) {
        String url = restServerAdd + "/project/getProjectFileList";
        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
        paramMap.add("pid", pid);
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap, headers);
        ResponseEntity<List<UtProjectAtt>> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, new ParameterizedTypeReference<List<UtProjectAtt>>() {
        });
        List<UtProjectAtt> checks = response.getBody();
        return checks;
    }
复制代码

 

posted @ 2020-04-30 09:17  八方鱼  阅读(1510)  评论(0)    收藏  举报