这可能是一个非常基本的问题,但是在我学习Java的这个阶段使我感到困惑。我有以下代码:
package com.soti84;
import java.util.ArrayList;
public class InvokeMethod {
public static void main(String[] args) {
ArrayList<String> exams= new ArrayList<String>();
exams.add("Java");
exams.add("C#");
}
}
如果我将实例化ArrayList对象的行和对该对象的调用移到该方法之外,则创建该对象的行很好,但是不允许对该对象进行add()方法调用。这是为什么?
package com.soti84;
import java.util.ArrayList;
public class InvokeMethod {
ArrayList<String> exams= new ArrayList<String>();
exams.add("Java");
exams.add("C#");
public static void main(String[] args) {
}
}
谢谢。
您根本无法在方法之外执行该代码。如果要执行此操作,则需要初始化程序块或静态块。
public class InvokeMethod {
ArrayList<String> exams= new ArrayList<String>();
{
exams.add("Java");
exams.add("C#");
}
现在,当您创建实例时,该块将执行。如果您的变量是静态的,则可以将该块设为静态(只需static
在该块之前添加)。当您的类初始化时,将执行静态块。当您需要填充的静态列表/映射时,这些块会非常方便。当然,所有方便编程的方法都可能是一种不好的做法,在这里,同样,那些块也被某些人所皱眉,它们可能非常危险,并导致难以发现的错误(主要是执行顺序)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句