gpt4 book ai didi

java - 如何在java中将一个通用列表转换为另一个

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

我正在尝试将一个通用枚举列表转换为另一种通用列表类型,但总是出现以下编译错误:

Is not applicable for the arguments

private static <T extends Enum<T>> List<T> enumListFromEnumList(List<Object> sourceEnumsList, Class<T> classObject) {
List<T> enums = new ArrayList<T>();

if(sourceEnumsList != null) {
for(Object enumObject : sourceEnumsList) {
if (enumObject instanceof Enum)
enums.add(Enum.valueOf(classObject, enumObject.toString().toUpperCase()));
}
}

return enums;
}

即使我试过这个:

private static <T extends Enum<T>> List<T> enumListFromEnumList(List<T> sourceEnumsList, Class<T> classObject) {
List<T> enums = new ArrayList<T>();

if(sourceEnumsList != null) {
for(T enumObject : sourceEnumsList) {
enums.add(Enum.valueOf(classObject, enumObject.toString().toUpperCase()));
}
}

return enums;
}

这就是我使用函数的方式:

adapterInfo.setResponseTypeList( enumListFromEnumList(info.getResponseTypeList(), CAPInfo.ResponseType.class));

更新:

当我转换成这个时它起作用了:

private static <S extends Enum<S>, T> List<S> enumListFromEnumList(List<T> sourceEnumsList, Class<S> classObject) {
List<S> enums = new ArrayList<S>();

if(sourceEnumsList != null) {
for(T enumObject : sourceEnumsList) {
enums.add(Enum.valueOf(classObject, enumObject.toString().toUpperCase()));
}
}

return enums;
}

所以现在的问题是如何翻译“<S extends Enum<S>, T> List<S>”部分(我的意思是它是如何工作的)

最佳答案

这是你要找的(我认为):

enum EnumA {
FIRST,
SECOND,
THIRD
}

enum EnumB {
FIRST,
SECOND,
THIRD
}

private static <A extends Enum<A>, B extends Enum<B>> List<B> enumListFromEnumList(List<A> sourceEnumsList, Class<B> classObject) {
List<B> enums = new ArrayList<B>();

if (sourceEnumsList != null) {
for (A enumObject : sourceEnumsList) {
enums.add(Enum.valueOf(classObject, enumObject.toString().toUpperCase()));
}
}

return enums;
}

public static void main(String[] args) {
List<EnumA> listA = new ArrayList<EnumA>();
listA.add(EnumA.FIRST);
listA.add(EnumA.THIRD);
List<EnumB> listB = enumListFromEnumList(listA, EnumB.class);
System.out.println(listB);
}

关于java - 如何在java中将一个通用列表转换为另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144642/

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