gpt4 book ai didi

java - 不使用原始类型无法获得泛型的类对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:39 26 4
gpt4 key购买 nike

考虑以下几点:

public interface Converter<I, O> {
public Class<I> getInputType();
public Class<O> getOutputType();
}

如果我实现接口(interface)并用非泛型类型填充类型参数,一切仍然很好:

public class ConverterImpl implements Converter<UUID, String> {
public Class<UUID> getInputType() {
return UUID.class;
}
public Class<String> getOutputType() {
return String.class;
}
}

但是,如果我实现接口(interface)并用泛型类型填充类型参数,问题就在这里:

public class ConverterImpl<T> implements Converter<Collection<T>, String> {
public Class<Collection<T>> getInputType() {
return Collection.class; //Compile time error
}
public Class<String> getOutputType() {
return String.class;
}
}

因为Collection.class返回 Class<Collection>而不是 Class<Collection<Something>> .但是,原始类型只是为了向后兼容而设计的,不建议使用。使用原始类型是这种情况的唯一解决方案吗?

最佳答案

你需要投Collection.classClass<Collection<T>> .试试这个:

public Class<Collection<T>> getInputType() {
return (Class<Collection<T>>) (Class) Collection.class;
}

关于java - 不使用原始类型无法获得泛型的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51684063/

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