2013-08-31 29 views
0

有人可以告訴我,如何在課堂級別調用方法?我們可以在課堂上而不是在方法中調用一種方法嗎?

假設我有一個像下面這樣的類,那麼我們可以在類級別調用test1Method嗎?如果不正確,請告訴我的原因..

class Test2 { 

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

public void test2Method() { } 

} 
+1

你是什麼意思「在班級」? 「類」方法是靜態的,可以在類本身或實例上調用(包括'null')。原因?因爲這就是Java。 –

+0

@Bobby:好的..我會在下一篇文章中關注這個。謝謝。 –

回答

4

不,您不能在方法調用語句或任何其他語句直接在類下。如在JLS Section 8 - Classes指定:

一類的主體聲明成員(字段和方法和嵌套類和接口),實例和靜態初始化,並構造(§8.1.6)。

您必須在這些成員(某些方法),初始值設定項或構造函數中移動方法調用。

+0

@SotiriosDelimanolis什麼? –

+0

@SotiriosDelimanolis。我的意思是按照JLS部分的規定,將成員,初始化程序和構造程序集體指向。 –

3

您可以將instance block

class Test2 { 

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

} 

實例中稱他們爲初始化塊都會被調用時的對象類型Test2被構建。 JVM可以確保實例塊內容在構造函數中被複制,像下面

class Test2 { 

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

} 

OR static initialization block

class Test2 { 

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

} 

靜態塊當第一次類Test2被載入執行。

1

如果您控制了test1Method方法的返回類型,那麼您可以使用該方法返回Test1對象並像下面一樣編寫代碼。

class Test2 { 

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

public void test2Method() { } 

} 
相關問題