gpt4 book ai didi

java - 如何使这两个java泛型方法声明在同一个类中

转载 作者:行者123 更新时间:2023-11-30 06:53:15 24 4
gpt4 key购买 nike

我想声明两个方法。其中一个应该打印 List,另一个应该打印 List>。所以我声明了以下代码,但它们有问题。有没有人可以帮我解决这个问题。

/* print the List<List<String>> */
public static <T> void print(List<List<T>> set) {
if (set == null) return;
for (List<T> subSet : set) {
System.out.print("[");
for (int i = 0; i < subSet.size() - 1; i++) {
System.out.print(subSet.get(i) + ", ");
}
if (subSet.size() >= 1) {
System.out.print(subSet.get(subSet.size() - 1));
}
System.out.println("]");
}
}

/* print the List<String> */
public static <T> void print(List<T> set) {
if (set == null) return;
int size = set.size();
System.out.print("[");
for (int i = 0; i < size - 1; i++) {
System.out.print(set.get(i) + ", ");
}
System.out.println(set.get(set.size() - 1) + "]");
}

最佳答案

如果编译器不知道该类型具有嵌套列表,则存在当第二个方法实际上是第一个类型时调用第二个方法的风险。

我会把它们结合起来

public static <T> void print(Collection<T> set) {
if (set == null) {
System.out.print("null");
return;
}
System.out.print("[ ");
String sep = "";
for (T t : set) {
System.out.print(sep);
sep = ", ";
if (t instanceof Collection) {
print((Collection) t);
} else {
System.out.print(t);
}
}
System.out.print(" ]");
}

public static <T> void println(Collection<T> set) {
print(set);
System.out.println();
}

关于java - 如何使这两个java泛型方法声明在同一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42329767/

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