在下面的代码中,应该在哪里构建sc?如果没有"sc = new SClass()"这一行,我会得到一个空指针异常,但我不确定它是否适合它.我尝试使用静态初始化程序块,但这给了我一个编译器错误.
第二个问题是,有关于这种静态初始化的文档吗?我只能找到对静态基元的引用,而不是静态对象.
class A {
private class SClass{
String s;
String t;
}
private static SClass sc;
public void StringTest() {
sc = new SClass();
sc.s = "StringTest";
System.out.println(sc.s);
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
a.StringTest();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你发现你有几个静态的东西需要一些实例化,或者你有非平凡的工作要做,就像在这种情况下,你可以使用静态初始化块,它们看起来像这样:
class A {
static {
sc = new SClass();
sc.s = "StringTest";
System.out.println(sc.s);
}
//...
Run Code Online (Sandbox Code Playgroud)
您还可以在更简单的情况下为其声明它的位置:
private static SClass sc = new SClass();
Run Code Online (Sandbox Code Playgroud)
此外,这里有一个复杂的问题,因为您无法定义SClass为静态类,但您打算静态使用它.内部类应该有一个静态限定符,下面的代码应该工作:
class A {
private static class SClass{
String s;
String t;
}
private static SClass sc;
static {
sc = new SClass();
sc.s = "StringTest";
System.out.println(sc.s);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8021 次 |
| 最近记录: |