这可能是一个非常基本的问题,但在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#");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我移动实例化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) {
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
您根本无法在方法之外执行该代码。如果你想这样做,你将需要初始化块或静态块。
public class InvokeMethod {
ArrayList<String> exams= new ArrayList<String>();
{
exams.add("Java");
exams.add("C#");
}
Run Code Online (Sandbox Code Playgroud)
现在,当您创建实例时,该块将被执行。如果您的变量是静态的,您可以将该块设为静态(只需static在该块之前添加)。静态块将在您的类初始化时执行。当您需要填充的静态列表/地图时,这些块可能非常方便。当然,在编程中方便的一切都可能是一种不好的做法,同样在这里,这些块被一些人皱眉,它们可能非常危险并导致难以发现的错误(主要是关于执行顺序)。
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |