如何用Java中的值初始化向量?

如何用Java中的值初始化向量?,java,class,vector,Java,Class,Vector,我有一个抽象教室和两个子类公寓和停车场。我想声明一个房间的向量并初始化它。这是我的代码,我想不出正确的语法: Vector<Room> rooms = new Vector<Room> { new Apartment(300), new ParkingPlace(200); }; Vector房间=新矢量{ 新公寓(300), 新停车场(200); }; 它给了我一个错误:不是一个语句您可以从列表中创建一个向量 Vector&l

我有一个
抽象教室
和两个子类
公寓
停车场
。我想声明一个
房间的向量
并初始化它。这是我的代码,我想不出正确的语法:

Vector<Room> rooms = new Vector<Room> {
        new Apartment(300),
        new ParkingPlace(200);
    };
Vector房间=新矢量{
新公寓(300),
新停车场(200);
};

它给了我一个错误:
不是一个语句

您可以从列表中创建一个向量

Vector<Room> rooms = new Vector<>(List.of(new Apartment(300), new Apartment(200)));
Vector rooms=新Vector(新公寓(300套)、新公寓(200套));
但也许你可以用列表代替向量

List<Room> rooms = List.of(new Apartment(300), new Apartment(200));
List rooms=List.of(新公寓(300套)、新公寓(200套));

Rogue评论中提到的双括号初始化应该如下所示:

Vector rooms=new Vector(){{
新增(新公寓(300间));
增加(新停车场(200));
}};
但是,最好使用通过
Arrays.asList
List.of
进行初始化的其他方式(从Java 9开始):

Vector房间=新向量(Arrays.asList)(
新公寓(300),
新停车场(200)
));

不要使用
向量
(使用任何其他集合);有双大括号初始化,但老实说,只需先创建对象,然后向其中添加项。最后,从设计角度来看,
ParkingPlace
作为一个
房间
有点奇怪。编辑:如果不在新集合中进行包装(如上所示),那么
列表
(不可变)和
数组#asList
(固定大小)可能会导致问题。我仍然会远离
Vector
,这是一个非常古老的API。
List.of
是不可变的,
数组。asList
是固定大小:)在编辑时抓住了我,是的,
Vector
出现在JDK1.0中,而
List
/
数组.asList
集合一起出现在Java 1.2中
框架次要注意:双大括号初始化示例有一个语法错误:它应该以
}结尾
})