如何用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中框架次要注意:双大括号初始化示例有一个语法错误:它应该以}结尾代码>非})代码>。