如何在Java中将泛型对象作为方法参数传递? [复制]

Posted

技术标签:

【中文标题】如何在Java中将泛型对象作为方法参数传递? [复制]【英文标题】:How to pass generic pbject as method parameter in Java? [duplicate] 【发布时间】:2021-02-08 20:59:24 【问题描述】:

我正在处理一个 Java 项目,我想将一个 Java 对象传递给一个方法以避免代码重复。这是我的代码:

private List<Dog> getListDogs(SearchResponse response) 

    SearchHit[] searchHit = response.getHits().getHits();

    List<Dog> dogList = new ArrayList<>();

    if (searchHit.length > 0) 

        Arrays.stream(searchHit).forEach(hit -> dogList.add(objectMapper.convertValue(hit.getSourceAsMap(),Dog.class))
                );
    

    return dogList;

我还有其他对象需要使用相同的方法,例如 Cat 对象和 Horse 对象。您对我如何使我的方法通用以便仅将对象类型作为参数传递有任何想法吗?

类似这样的:

private List<Generic> getListObject(SearchResponse response , GenericObject object)...

【问题讨论】:

这可能会有所帮助:***.com/questions/450807/… 点赞private &lt;T&gt; List&lt;T&gt; getListObject(SearchResponse response , Class&lt;T&gt; clazz)... @Eklavya-UpvoteDon'tSay 感谢您的回复,但是我如何用我的新参数 Class clazz 替换 Animal.class 和 List 【参考方案1】:

按照上面的cmets,我发现了如何解决我的问题,这是通用方法代码:

private <T> List<T> getSearchResult(SearchResponse response , Class<T> clazz) 

    SearchHit[] searchHit = response.getHits().getHits();

    List<T> lisOfObjects = new ArrayList<>();

    if (searchHit.length > 0) 
             Arrays.stream(searchHit).forEach(hit -> lisOfObjects.add(objectMapper.convertValue(hit.getSourceAsMap(),clazz)));
    

    return lisOfObjects;

【讨论】:

以上是关于如何在Java中将泛型对象作为方法参数传递? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Class 作为参数传递并在 Java 中返回泛型集合?

如何在 Java 中将类型作为方法参数传递

如何在java方法中将数组作为参数传递?

在 Postman 中将类对象作为参数传递

如何在将对象作为泛型参数传递时使用它的基础类型

如何在Java中将类作为参数传递?