Collection<String> collection = new ArrayL ist<String>(); .
时间: 2023-11-18 08:08:30 浏览: 117
这段代码有一个空格的问题,应该改为以下代码:
```
Collection<String> collection = new ArrayList<String>();
```
其中,`ArrayList`是Java中的一个动态数组类型,`Collection`是Java中的一个接口,代表一组对象的集合。在这里,我们创建了一个`ArrayList`类型的集合对象,并将其赋值给`Collection<String>`类型的引用变量`collection`。这意味着,我们可以使用`collection`来访问该集合对象,并执行`Collection`接口中定义的方法。由于泛型的引入,这个集合只能存储`String`类型的元素。
相关问题
private Collection collection=new ArrayList<String>(); private Collection<Integer> collection2=new ArrayList<>(); public static void main(String[] args) { Collection2 collection2=new Collection2(); //collection2.men(); collection2.add(collection2.collection); } public void add(Collection<? extends Integer> collection) { }这段代码为什么正确
这段代码正确是因为使用了通配符 "? extends Integer",表示这个集合中的元素必须是 Integer 类型或其子类,所以可以将 collection2 集合添加到 add 方法中。同时,使用了泛型可以在编译期间进行类型检查,避免了运行时出现类型转换异常的情况。
Collection<String>=new ArrayList<>();这样子会什么会报错
在Java中,`ArrayList`是`List`接口的一个实现类,而`Collection`是`List`接口的父接口。因此,你可以将`ArrayList`赋值给`Collection`类型的变量,例如:
```java
Collection<String> collection = new ArrayList<>();
```
这样的赋值是合法的,不会报错。但是,如果你将`ArrayList`赋值给一个泛型声明为`Collection<String>`的变量,会出现编译错误。
```java
Collection<String> collection = new ArrayList<>(); // 正确
Collection<String> collection = new ArrayList<String>(); // 也可以
```
但如果你使用了Diamond Operator (`<>`),在Java 7之前是不允许的,会导致编译错误。要解决这个问题,你可以将代码修改为以下形式:
```java
Collection<String> collection = new ArrayList<String>();
```
或者直接使用Diamond Operator:
```java
Collection<String> collection = new ArrayList<>();
```
总结起来,将 `Collection<String>` 赋值为 `new ArrayList<>()` 是合法的,不会报错。
阅读全文