繁体   English   中英

如何使方法通用以返回任何类型的列表

[英]How to make the method generic to return a List of any type

如何使此方法通用以返回任何类型的List ,当前它返回StringList

public static List<String> splitCommaSeparatedStringToListAnyDataTypeArray(String s) {
    List<String> ints = new ArrayList<>();
    if (isNull(s)) {
        return ints;
    }
    String[] split = s.split(COMMA);
    for (String st : split) {
        ints.add(String.valueOf(st));
    }
    return ints;
}

假设您使用Java 8 ,则可以使用FunctionString转换为给定类型,然后将其方法重写为下一个:

public static <T> List<T> splitCommaSeparatedStringToList(String s, 
    Function<String, T> function) {
    if (isNull(s)) {
        return Collections.emptyList();
    }
    // Convert the array of String into a List of T
    return Arrays.stream(s.split(COMMA)).map(function).collect(Collectors.toList());
}

您的初始方法将相当于splitCommaSeparatedStringToList(myInputString, String::valueOf)


对于Java的早期版本,逻辑是相同的,只需使用Google Guava的 FluentIterable替换Stream并使用com.google.common.base.Function而不是java.util.function.Function作为mapper函数

public static <T> List<T> splitCommaSeparatedStringToList(String s, 
    Function<String, T> function) {
    if (isNull(s)) {
        return Collections.emptyList();
    }
    return FluentIterable.from(Arrays.asList(s.split(COMMA))).transform(function).toList();
}

仅将List<String> with List<?>替换List<String> with List<?>

public static List<?> splitCommaSeparatedStringToListAnyDataTypeArray(String s) {
    List<String> ints = new ArrayList<>();
    if (isNull(s)) {
        return ints;
    }
    String[] split = s.split(COMMA);
    for (String st : split) {
        ints.add(String.valueOf(st));
    }
    return ints;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM