如何正确创建接受对象列表的方法
How to correctly create method accepting list of objects
您好,我想创建接受对象列表的方法,如下所示:
public static String formatList(List<Object> listToFormat,int indentationSize){
String indentation = Stream.generate(()->"\t").limit(indentationSize).collect(Collectors.joining());
String newIndentedLine = "\n"+indentation;
return newIndentedLine+listToFormat.stream()
.map(Object::toString)
.collect(Collectors.joining(newIndentedLine));
}
但是当我尝试做这样的事情时:
List<Car> cars = new ArrayList<>();
...
Formater.formatList(cars);
不允许。
您使用 public static <T> String formatList(List<T> listToFormat,int indentationSize){
接受对象。
代码:
public static <T> String formatList(List<T> listToFormat,int indentationSize){
String indentation = Stream.generate(()->"\t").limit(indentationSize).collect(Collectors.joining());
String newIndentedLine = "\n"+indentation;
return newIndentedLine+listToFormat.stream()
.map(Object::toString)
.collect(Collectors.joining(newIndentedLine));
}
Java 不允许这样做,因为 List<Car>
不是 List<Object>
,即使 Car
是 Object
.
没有必要声明类型参数,因为我们不关心实际类型是什么。每个引用类型都从 Object
继承而来,它有一个 toString
方法,所以我们可以用 List<?>
:
替换 List<Object>
public static String formatList(List<?> listToFormat, int indentationSize) {
您好,我想创建接受对象列表的方法,如下所示:
public static String formatList(List<Object> listToFormat,int indentationSize){
String indentation = Stream.generate(()->"\t").limit(indentationSize).collect(Collectors.joining());
String newIndentedLine = "\n"+indentation;
return newIndentedLine+listToFormat.stream()
.map(Object::toString)
.collect(Collectors.joining(newIndentedLine));
}
但是当我尝试做这样的事情时:
List<Car> cars = new ArrayList<>();
...
Formater.formatList(cars);
不允许。
您使用 public static <T> String formatList(List<T> listToFormat,int indentationSize){
接受对象。
代码:
public static <T> String formatList(List<T> listToFormat,int indentationSize){
String indentation = Stream.generate(()->"\t").limit(indentationSize).collect(Collectors.joining());
String newIndentedLine = "\n"+indentation;
return newIndentedLine+listToFormat.stream()
.map(Object::toString)
.collect(Collectors.joining(newIndentedLine));
}
Java 不允许这样做,因为 List<Car>
不是 List<Object>
,即使 Car
是 Object
.
没有必要声明类型参数,因为我们不关心实际类型是什么。每个引用类型都从 Object
继承而来,它有一个 toString
方法,所以我们可以用 List<?>
:
List<Object>
public static String formatList(List<?> listToFormat, int indentationSize) {