|
1
37
将集合(或列表,或根据需要设置)优先于数组。使用泛型可以获得缺少Java 5之前的类型检查。此外,通过只公开接口,您可以稍后自由地更改实现(例如,为LinkedList切换ArrayList)。
数组和泛型不能很好地混合。所以,如果你想利用仿制药,你应该
通常
避免数组。
使用 Collections.unmodifiableCollection (和类似的方法),您将获得只读约束(使用数组无法实现这一点—您必须返回数组的克隆)。 不能强制成员不可变,但也不能用数组来实现。 |
|
|
2
11
实际上,与集合/列表相比,数组还有一个优势。由于Java通过类型擦除实现泛型的方式,不能有两种方法将集合作为参数,而只有集合的泛型类型不同。 前任:
以上两个方法将不会编译,因为javac编译器使用类型擦除,因此无法将类型信息传递给JVM。JVM将只看到两个将集合作为其参数的方法。 在上述情况下,最好的解决方法是让这些方法以数组作为参数,并在将参数传递给它们时使用集合/列表的toArray()方法。如果您仍然想在上面的方法中使用Copy/List,只需使用java. UTI.SARTRO.ASLISTHER()方法来获取列表。 前任:
|
|
|
3
4
在中签出不可修改的*方法
unmodifiableList 例如。 对我来说,这取决于如何使用返回的列表。它将传递给哪些其他方法,以及如何使用它?一般来说,我更喜欢泛型集合而不是数组,但会根据具体情况对其进行更改。 如果您正在做一些关键的事情,阵列的性能可能也会更快。 |
|
|
4
3
我的答案被否决了,因为我在课堂上使用代理,而使用代理(代理和反射)是不允许的,因为它会影响一些人的思维性能(许多人甚至不使用反射,但是他们使用Hibernate和Spring,后者使用重新感染、类代理和XML)。 来自cglib.sourceforge.net项目的增强器,它允许为类创建代理(JDK只支持接口代理)。代理允许您控制对象中的方法,但不能使用反射访问字段。如果你有什么问题,可以问。 |