1

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

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

class Test2 {

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

public void test2Method() {  }

}
4

3 回答 3

5

不,您不能在类下直接拥有方法调用语句或任何其他语句。如JLS 第 8 节 - 类中所述:

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

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

于 2013-08-31T18:04:26.430 回答
3

您可以在实例块中调用它们

class Test2 {

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

}

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

class Test2 {

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

}

静态初始化块

class Test2 {

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

}

静态块在第一次Test2加载类时执行。

于 2013-08-31T18:02:30.080 回答
1

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

class Test2 {

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

public void test2Method() {  }

}
于 2013-08-31T18:14:36.203 回答