0
class Test {
    void method2() {
        System.out.println("This is outer class method");
    }


    static class M2 {
        void method1() {
            System.out.println("This is method1 in class m2");
        }
    }


    public static void main(String[] args){
        //test a=new test();
        //a.method2();
    }
}

メインクラスからクラス M2 にある method1 を呼び出したいです。また、method1からmethod2も。

4

4 に答える 4

2

method2 から method1 を呼び出すのは簡単です。

new M2().method1();

静的内部クラスはほとんど通常のクラスであるためです。

ただし、内部クラスは静的であるため、外部クラスのインスタンスには対応しません。また、method2 は静的ではないため、インスタンスで呼び出す必要があるため、そのメソッドを直接呼び出す方法はなく、インスタンスが必要です。メソッドを呼び出す外部クラスの

new Test().method2();
于 2013-06-26T14:33:08.920 に答える
2

method1からmethod2を呼び出すには、 method1内の静的コンテキストにTestいるため、クラスのインスタンスを作成する必要があります。

new Test().method2();


そして、 main から method1 を呼び出す:

new Test.M2().method1();

はネストされたクラスであるため、外部クラス名 - TestM2で直接アクセスできます。それが内部クラスだった場合、アクセスするには のインスタンスを作成する必要があります。Test

new Test().new M2().method1();
于 2013-06-26T14:35:23.573 に答える
1

これはあなたのために働くでしょう

public class Test{
void method2(){
    System.out.println("This is outer class method");
}

static class M2{
    void method1(){
        System.out.println("This is method1 in class m2");
    }
}

public static void main(String[] args){       
    M2 m2=new M2();
    m2.method1();
}

}

于 2013-06-26T14:39:01.387 に答える
0

通常どおり、非静的メソッドを呼び出すには、それを呼び出すインスタンスが必要です。メソッドを静的にするか、クラスのインスタンスを作成します。コードを機能させる方法の 1 つのオプションを次に示します。

import java.util.*;
import java.lang.*;

class main{
    static void method2(){
        System.out.println("This is outer class method");
    }

    static class M2{
        static void method1(){
            System.out.println("This is method1 in class m2");
            method2();
        }
    }

    public static void main(String[] args){
        M2.method1();
        //test a=new test();
        //a.method2();
    }
}
于 2013-06-26T14:32:31.453 に答える