我有点失落,我没有编码好几个月,我无法弄清楚为什么大小返回0 ...我明确地在构造函数中添加了元素
package com.data;
import java.util.Date;
import java.util.Vector;
import com.vols.Vol;
public class InfosVols {
public static Vector<Vol> listeVol = new Vector<Vol>();
public InfosVols(){
listeVol.addElement(new Vol(999999,"Montreal", "Toronto", false, new Date(), 9, 3));
listeVol.addElement(new Vol(111,"Montreal", "Toronto", false, new Date(), 9, 3));
listeVol.addElement(new Vol(112,"Montreal", "Toronto", false, new Date(), 10, 3));
listeVol.addElement(new Vol(121,"Montreal", "Vancouveur", false, new Date(), 8, 5));
listeVol.addElement(new Vol(131,"Montreal", "Calgary", false, new Date(), 14, 3));
listeVol.addElement(new Vol(132,"Montreal", "Calgary", false, new Date(), 16, 3));
}
public static void main(String[] args) {
System.out.println(listeVol.size());
}
}
感谢
答案 0 :(得分:5)
您永远不会致电InfosVols
(或者更重要的是,创建InfosVols
的新实例)
首先删除对listeVol
的静态引用,然后构建InfosVols
的新实例
InfosVols vols = new InfosVols();
然后尝试使用新创建的InfosVols
实例(和实例字段)来打印Vector
的大小
System.out.println(vols.listeVol.size());
我可能还应该指出Vector
已被“弃用”,而支持collections API List
界面。
答案 1 :(得分:1)
在InfosVols类的构造函数中添加元素。没有对构造函数的调用(即创建InfoVols的实例)。因此,向量中没有添加任何元素。
答案 2 :(得分:1)
您尚未调用添加元素的构造函数。 尝试在尺寸之前调用new:
new InfosVols();
System.out.println(listeVol.size());
目前还不是很清楚你想要实现什么,但这种设计很危险。每次对构造函数的新调用都会向静态(全局)变量listeVol添加更多元素。您可能不希望listeVol是静态的。
答案 3 :(得分:1)
这就是跑步
public static void main(String[] args) {
System.out.println(listeVol.size());
}
在运行之前需要构建静态环境,因此按顺序这就是所有运行的内容
public static Vector<Vol> listeVol = new Vector<Vol>();
public static void main(String[] args) {
System.out.println(listeVol.size());
}
这意味着您从未构建InfosVols
并且从未调用此代码
public InfosVols(){
listeVol.addElement(new Vol(999999,"Montreal", "Toronto", false, new Date(), 9, 3));
listeVol.addElement(new Vol(111,"Montreal", "Toronto", false, new Date(), 9, 3));
listeVol.addElement(new Vol(112,"Montreal", "Toronto", false, new Date(), 10, 3));
listeVol.addElement(new Vol(121,"Montreal", "Vancouveur", false, new Date(), 8, 5));
listeVol.addElement(new Vol(131,"Montreal", "Calgary", false, new Date(), 14, 3));
listeVol.addElement(new Vol(132,"Montreal", "Calgary", false, new Date(), 16, 3));
}
如果你添加
new InfosVols();
进入已调用的部分,您将获得预期的结果。
答案 4 :(得分:0)
您永远不会调用构造函数,因此静态属性永远不会被初始化。另外,请不要使用Vector
这是一个老课程,而是根据您的需要选择ArrayList
(或其他List
实施方案。)
我不确定您是否真的希望将此属性设置为静态,也不确定您是否真的希望在构造函数中初始化它。