-4

今日、私は友人のJavaの宿題を手伝っていましたが、AndroidではプレーンJavaとJavaの違いに気づかなかったと思います。プログラムの簡単な記述:

public class myClass{

    public static void Main (String[] args){
        doThis();
    }

    public void doThis(){
        System.out.println("Did this");
    }
}

しかし、それを実行すると、doThis()メソッドを静的にする必要があるという苦情がありました。何故ですか?Androidで基本的なものを開発するときは、staticキーワードを使用する必要はありません。

注:これは、静的が実際に何を意味するのかを恐れているという事実に起因している可能性があります。

4

4 に答える 4

2

何故ですか?

Main()静的だからです。

がインスタンスメソッドであり、 (たとえば)のインスタンスをMain()呼び出した場合は、インスタンスメソッドにすることもできます。または、スタティックがのインスタンスを作成した場合、そのインスタンスを呼び出すことができます。Main()myClassnew myClassdoThis()Main()myClassdoThis()

Androidで基本的なものを開発するときは、staticキーワードを使用する必要はありません。

これは、Androidのエントリポイントがコンポーネント(たとえば、onCreate()の)のインスタンスメソッドになる傾向があるためActivityです。

于 2012-12-17T21:41:47.367 に答える
1

静的メソッドは、どの Object インスタンスでも呼び出されないメソッドです。非静的メソッドはオブジェクトに属し、呼び出すにはオブジェクト インスタンスが必要です。したがって、静的メソッドはどのオブジェクトでも呼び出されないため、静的メソッドからインスタンス メソッドを呼び出すことは合法ではありません。

インスタンス メソッドを呼び出すには、オブジェクトをインスタンス化する必要があります。

public static void main(String[] args){
    MyClass object = new MyCLass();
    object.doThis();
}
public void doThis(){
    System.out.println("Did this");
}

Android コードは Java コードであり、まったく同じ規則があります。

インスタンスと静的メンバーに関する Java チュートリアルを読んでください。

于 2012-12-17T21:43:14.653 に答える
0

静的メソッドは、所有するクラスのインスタンスがなくても呼び出すことができるため、次のことができます。

myClass.doThis();

doThis()メソッドは静的ではないため、次のようなインスタンスオブジェクトを作成する必要があります。

myClass instance = new myClass();
instance.doThis();

doThis()メソッドを呼び出しているmain()メソッドは静的メソッドであり、myClassのインスタンスを呼び出す必要はありません。つまり、メインメソッドによって呼び出されるメソッドは静的であるか、インスタンスオブジェクトで呼び出される必要があります(上記の2番目の例を参照)。

于 2012-12-17T21:49:05.537 に答える
0

問題は、次のように書き直す必要があることです。

    public class MyClass{  //fixed camel casing, classes start with upper case
       public static void main (String[] args){  //fixed lettering
          MyClass mc = new MyClass();
          mc.doThis();
       }

    public void doThis(){
        System.out.println("Did this");
            }
    }

これは、Android と Java の違いに関する特別なことではなく、どちらも失敗します。問題は、静的コンテキストから非静的メソッドを参照しようとしていることです。静的は、関数を呼び出すためにクラスをインスタンス化する必要がないことを示しているため、問題が発生する可能性があります。

于 2012-12-17T21:41:56.837 に答える