Java中泛型的困惑

时间:2020-04-05 10:17:00

标签: java generics

我正在用Java学习泛型。首先,我们创建了一个Integer数组列表,并在列表中添加了一个值。

pdf

方法重复项只能由扩展了const data = { result: [ { name: "2015.494782.1981AugustSapthagirikannada.gif", source: "derivative", format: "Animated GIF", original: "2015.494782.1981AugustSapthagirikannada_jp2.zip", mtime: "1490522158", size: "270516", md5: "5f0758aaef567d76916620f2ed568cb9", crc32: "f70dda86", sha1: "99c63d12e5d8c115a66d51715d998cd2534254a1" }, { name: "2015.494782.1981AugustSapthagirikannada.pdf", source: "original", mtime: "1484723772", size: "7488708", md5: "eecd0d8ae44a69fa0b398f8e00dda573", crc32: "f06bf0f0", sha1: "f00af63426b93a9587b0b59b20cc4beb79482243", format: "Image Container PDF" } ] }; // Method 1 const item = data.result.find(({ name }) => name.endsWith(".pdf")); const file_name = item ? item.name : "not found"; // Method 2 let file_name2 = "not found"; data.result.forEach(obj => { if (obj.name.split(".").pop() === "pdf") { file_name2 = obj.name; } }); console.log(file_name); console.log(file_name2);的那些对象使用。但是,由于import java.util.ArrayList; import java.util.List; public class GenericsRunner { public static void main(String[] args) { ArrayList<Integer> numbers=new ArrayList<>(); numbers.add(1); } static <X extends List> void duplicate(X list) { list.addAll(list); } } 是接口

List

List正在实现public interface List<E> extends Collection<E>

ArrayList

我现在被困住了。那些继承自超类的属性的类使用扩展。 但是List是如何扩展public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable 的呢?实际上,Arraylist正在实现List。这个扩展关键字如何为此工具机制工作?我感到困惑的是,它使用的是ArrayListList是相同的吗?

1 个答案:

答案 0 :(得分:1)

原因是<X extends T>意味着X是从T继承的。接口没有特殊的语法,例如在类声明中描述继承时。

ArrayList实现了接口List,这意味着它是从List继承的,因此适用于通用类型<X extends List>

在Java中,任何类都只能扩展一个类。默认情况下,当您不指定其他父类时,它是Object。而且类和接口可以实现任意数量的接口。

希望这会有所帮助。