gpt4 book ai didi

java - 泛型转换器 - 我是否正确使用泛型?

转载 作者:行者123 更新时间:2023-12-02 10:35:14 25 4
gpt4 key购买 nike

我不确定我正在编写的方法是否正确使用泛型。我正在使用responseBodyConverter()来自 Retrofit 的方法。截至目前,我有以下实现:

    public static <T> Converter<ResponseBody, T> getConverter(){

return sRetrofit.responseBodyConverter(ParameterizedType.class, new Annotation[0]);
}

我的问题是:我可以使用 ParameterizedType.class 来满足 responseBodyConverter()Type 要求吗?我认为我可以使用 T 作为类型参数来实现此目的,但我尝试的所有方法都不起作用:T.class,仅传递 T > 等

我最终想要的是拥有一种方法,可以为我定义的不同类型的类提供转换器。我不想定义多个基本上做同样事情的方法,只针对不同类型的转换器。我经常在 Java 中的泛型上遇到困难,因此任何对此的深入了解将不胜感激。

最佳答案

由于类型删除,T 的类型在运行时丢失。调用者必须提供Class,例如

public static <T> Converter<ResponseBody, T> getConverter(Class<? extends T> type) {
return sRetrofit.responseBodyConverter(type, new Annotation[0]);
}

然后调用者可以这样做:

Converter<ResponseBody, String> cvt = getConverter(String.class);

或者在 Java 10+ 中:

var cvt = getConverter(String.class);

关于java - 泛型转换器 - 我是否正确使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com