相关疑难解决方法(0)

调用没有名称的Java方法

我正在看下面的代码,发现有点奇怪的东西:

public class Sequence {
    Sequence() {
        System.out.print("c ");
    }

    {
        System.out.print("y ");
    }

    public static void main(String[] args) {
        new Sequence().go();
    }

    void go() {
        System.out.print("g ");
    }

    static {
        System.out.print("x ");
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这会给出一个编译错误,因为System.out"y"不属于方法声明只是一个{ }.为什么这个有效?我没有看到这个代码将如何或应该被调用.

当运行它时它也产生x y c g,为什么static { }在序列构造函数之前调用get?

java initializer

99
推荐指数
7
解决办法
9537
查看次数

Java独立的代码块

我已经使用Java很长一段时间但从来没有遇到过这样的事情.我想知道它的作用以及为什么它不是错误.

public class Foo{

 private int someVariable;

 {
    doSomething();
 }

 public Foo(){
 }

 private void doSomething(){
    // Something is done here
 }

}
Run Code Online (Sandbox Code Playgroud)

我想知道单个块的目的是什么,其中包含对"doSomething()"的调用.它只是一个骨架代码.我遇到的实际代码是http://www.peterfranza.com/2010/07/15/gwt-scrollpanel-for-touch-screens/

java programming-languages

18
推荐指数
2
解决办法
1006
查看次数

java中的内联初始化块

我上课了

public class MyMain{
    public static void main(String... arg){
            Temp t = new Temp(){
                {
                    System.out.println(" instance initialize");
                }
            };

        }
    }

class Temp{
    int i;

    {
        i=9;
        System.out.println("Static"+i);
    }
    Temp(){
        System.out.println("Temp const "+i);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行main方法时输出到:

Static9
Temp const 9
instance initialize
Run Code Online (Sandbox Code Playgroud)

理想情况下,块在构造函数之前执行,但是在构造函数之后调用内联初始化块.为什么?

java initialization

4
推荐指数
2
解决办法
4615
查看次数