[英]How to make the method generic to return a List of any type
如何使此方法通用以返回任何类型的List
,当前它返回String
的List
:
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 ,则可以使用Function
将String
转换为给定类型,然后将其方法重写为下一个:
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.