基本上它允许Java在一个结构实现中通过genericstypes声明(如class MyStructure )存储多种types的对象,这是Java的主要特性之一。
面向对象的方法以模块化和可重用性为基础,通过分离关注点 – 使用具有任何types对象的结构(只要服从几条规则)的能力。
你可以实例化的东西如下:
ArrayList list = new ArrayList();
代替
ArrayList list = new ArrayList<>();
例如,通过声明和使用genericstypes,您将通知它将pipe理的对象types的结构,例如,如果您将非法types插入到该结构中,编译器将能够通知您。 我们说:
// this works List list1 = new ArrayList(); list1.add(1); list1.add("one"); // does not work List list2 = new ArrayList<>(); list2.add(1); // compiler error here list2.add("one");
如果您想查看一些示例,请查看文档文档 :
/** * Generic version of the Box class. * @param the type of the value being boxed */ public class Box { // T stands for "Type" private T t; public void set(T t) { this.t = t; } public T get() { return t; } }
那么你可以实例化的东西,如:
class Paper { ... } class Tissue { ... } // ... Box boxOfPaper = new Box<>(); boxOfPaper.set(new Paper(...)); Box boxOfTissues = new Box<>(); boxOfTissues.set(new Tissue(...));
从中得出的主要原因是你正在指定你想要的对象types。
至于使用Object l = new ArrayList<>(); ,你没有访问List或ArrayList实现,所以你将无法做很多的收集。