如何正确创建接受对象列表的方法

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>,即使 CarObject.

没有必要声明类型参数,因为我们不关心实际类型是什么。每个引用类型都从 Object 继承而来,它有一个 toString 方法,所以我们可以用 List<?>:

替换 List<Object>
public static String formatList(List<?> listToFormat, int indentationSize) {