2011-01-19 17 views
2

Javaでは、メソッド/コンストラクタ宣言を別のメソッド/コンストラクタ宣言内に表示できますか?例:Javaでは、メソッド/コンストラクタ宣言は、別のメソッド/コンストラクタ宣言の中に現れますか?

void A() { 
    int B() { } 
} 

私は思っていませんが、私は安心しています。

+2

あなたは正しいと思います。 –

+0

コンストラクタ内のコンストラクタに対してさえも? –

+1

ポイントは何ですか?コンストラクタは、他のコンストラクタのインスタンスではなく、クラスのインスタンスを作成します:) –

答えて

5

いいえ。コンパイルできません。

+0

最初の回答が授与されました。 –

2

いいえ、Javaでは、メソッドは別のメソッド内ではなくクラス内でのみ定義できます。

3

ない直接、しかし、あなたは、メソッド内のクラスのメソッドを持つことができます。

class A { 
    void b() { 
     class C { 
      void d() { 
      } 
     } 
    } 
} 
+0

はい、私はその可能性を認識しています。 +1 –

2

これは、Javaで可能ではありません。しかし、コードは複雑になりますが、これはインタフェースで実現できます。

interface Block<T> { 
    void invoke(T arg); 
} 
class Utils { 
    public static <T> void forEach(Iterable<T> seq, Block<T> fct) { 
    for (T elm : seq) 
     fct.invoke(elm); 
    } 
} 
public class MyExample { 
    public static void main(String[] args) { 
    List<Integer> nums = Arrays.asList(1,2,3); 
    Block<Integer> print = new Block<Integer>() { 
     private String foo() { // foo is declared inside main method and within the block 
     return "foo"; 
     } 
     public void invoke(Integer arg) { 
     print(foo() + "-" + arg); 
     } 
    }; 
    Utils.forEach(nums,print); 
    } 
} 
関連する問題