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

时间:2017-01-25 12:02:44

标签: java generics

如何使此方法通用以返回任何类型的List,目前它返回List String个:{/ p>

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;
}

2 个答案:

答案 0 :(得分:1)

假设您使用 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代替{ {1}}为映射器功能

java.util.function.Function

答案 1 :(得分:-1)

仅替换<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/splash_image" > <ImageView android:id="@+id/imgLogo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:textSize="12dp" android:textColor="#454545" android:gravity="center_horizontal" android:layout_alignParentBottom="true"/> </RelativeLayout>

List<String> with List<?>