原谅我发布的问题与我昨晚发布的问题非常相似。我已经简化了问题,以便提出更具体的问题:
当我使用以下代码时,我收到了(类,接口或枚举)错误:
import java.util.*;
ArrayList<egg> eggys = new ArrayList<egg>;
public class EggTest{
public static void main(String [] args){
egg a = new egg();
egg b = new egg();
eggys.add(a);
eggys.add(b);
for (egg eggo :eggys){
System.out.println(eggo.size);
}
}
}
编译器的输出是:
eggys.java:4: class, interface, or enum expected
ArrayList<egg> eggys = new ArrayList<egg>;
^
1 error
我做的不对。任何人都可以帮我弄清楚如何使用ArrayList?
答案 0 :(得分:6)
您只能在类或方法中声明变量;而不是顶级代码。
答案 1 :(得分:2)
与其他语言(如C或C ++)不同,您不能将变量或其他声明放在类或函数之外:
public class EggTest{
public static void main(String [] args){
egg a = new egg();
egg b = new egg();
List<egg> eggys = new ArrayList<egg>();
eggys.add(a);
eggys.add(b);
for (egg eggo :eggys){
System.out.println(eggo.size);
}
}
}
在这种情况下,局部变量看起来是更好的选择。
答案 2 :(得分:2)
Java是纯粹面向对象的语言,这意味着任何/所有属性都应该属于一个实体,即类/接口/枚举。在你的情况下,你已经定义了一个属性/变量,如下所述,它不属于类/ enum /接口,因此java编译器会抱怨它。
ArrayList<egg> eggys = new ArrayList<egg>;
您不能在其他编程语言中使用此属性,如全局变量。 Java纯粹面向对象的本质不允许这样做。
同样如下面评论中的“skiwi”所述,您的ArrayList定义中也存在语法错误。你错过了最后的括号。应该更正:
ArrayList<egg> eggys = new ArrayList<egg>();
答案 3 :(得分:1)
两件事:
将此行放在班级
中 ArrayList<egg> eggys = new ArrayList<egg>;
您在以上行中缺少()。它应该是:
ArrayList<egg> eggys = new ArrayList<egg>();
答案 4 :(得分:0)
执行以下操作。
import java.util.*;
public class EggTest{
ArrayList<egg> eggys = new ArrayList<egg>();
public static void main(String [] args){
egg a = new egg();
egg b = new egg();
eggys.add(a);
eggys.add(b);
for (egg eggo :eggys){
System.out.println(eggo.size);
}
}
}
OR
import java.util.*;
public class EggTest{
public static void main(String [] args){
ArrayList<egg> eggys = new ArrayList<egg>();
egg a = new egg();
egg b = new egg();
eggys.add(a);
eggys.add(b);
for (egg eggo :eggys){
System.out.println(eggo.size);
}
}
}
只有在主方法中访问ArrayList
变量时,才能使用第二种方法。
您获得的错误只是因为您尝试将ArrayList
变量声明为顶级声明。 java中的变量只能在类中声明
或方法。
答案 5 :(得分:0)
我想知道 eggys 列表在课堂上方做了什么。在Java中,您不能将上面的变量声明为普通类。