我们可以在类级而不是方法中调用方法吗?

时间:2013-08-31 18:00:12

标签: java

有人可以告诉我,如何在班级调用方法?

假设我有一个类如下,那么我们可以在类级调用test1Method吗?如果不正确,请告诉我原因..

class Test2 {

Test1 t1=new Test1();
t1.test1Method();

public void test2Method() {  }

}

3 个答案:

答案 0 :(得分:4)

不,你不能直接在类下面有方法调用语句或任何其他语句。正如JLS Section 8 - Classes中所述:

  

类的主体声明成员(字段和方法以及嵌套类和接口),实例和静态初始化器以及构造函数(第8.1.6节)。

您必须在这些成员(某个方法),初始化程序或构造函数中移动方法调用。

答案 1 :(得分:3)

您可以在instance block

内拨打电话
class Test2 {

{
  Test1 t1=new Test1();
  t1.test1Method();
}

}

每次构造Test2类型的对象时,都会调用实例初始化程序块。 JVM确保在构造函数中复制实例块内容,如下面的

class Test2 {

     public Test2() {
        {
           Test1 t1=new Test1();
           t1.test1Method();
       }
     }    

}

static initialization block

class Test2 {

static {
  Test1 t1=new Test1();
  t1.test1Method();
}

}
第一次加载类Test2时会执行静态块

答案 2 :(得分:1)

如果您可以控制test1Method方法的返回类型,那么您可以使用该方法返回Test1对象并编写如下代码。

class Test2 {

Test1 t1=new Test1().test1Method();

public void test2Method() {  }

}