Arraylist的案例抱怨“孤儿案”

时间:2013-03-24 19:54:31

标签: java list case

我的问题是,我使用case制作了一个arraylist,因此值是有条件的,但编译器抱怨我有一个“孤立的案例”。为什么呢?

ArrayList<Integer> object = new ArrayList<Integer>();{
        case objid == 1:{
        object.add(objnum);
        object.add(objx);
        object.add(objy);}

3 个答案:

答案 0 :(得分:4)

如果没有case声明,您就不能拥有switch声明。

如下所示的switch语句:

switch (var) {
case 0:
  doSomething();
  break;
case 1:
  somethingElse();
  break;
default:
  anotherThing();
  break;
}

(大致)等同于

if (var == 0) {
  doSomething();
} else if (var == 1) {
  somethingElse();
} else {
  anotherThing();
}

所以,就像说

一样没有意义
if (0) {
  doSomething();
} // ...

如果没有任何内容可以将进行比较,那么使用case语句也没有意义。从这个意义上讲,case语句没有父switch语句,因此Java表示它是孤立

您可以将代码更改为:

if (objid == 1) {
    object.add(obnum);
    object.add(objx);
    object.add(objy);
}

有关switch声明的详细信息,请尝试this document

答案 1 :(得分:1)

case objid == 1:{
    object.add(objnum);
    object.add(objx);
    object.add(objy);
}

这永远不是有效的Java。您的意思是if,就像这样吗?

if (objid == 1) {
    object.add(objnum);
    object.add(objx);
    object.add(objy);
}

要回答第二个问题,ArrayList通常只应在您无法再直接访问其成员时使用,因此需要x = object.get(3)之类的内容。

答案 2 :(得分:0)

    ArrayList<Integer> object = new ArrayList<Integer>();
    switch (objid) {
      case 1:
      {
        object.add(objnum);
        object.add(objx);
        object.add(objy);}
      }