1

私はカプセル化しようとします。インターフェイスからの例外、静的な内部クラスの動作、非静的な内部クラスの動作しない、用語を理解できない: 入れ子になったクラス、内部クラス、入れ子になったインターフェイス、インターフェイス抽象クラス -- 繰り返しのように聞こえる!

悪い!--- 明らかに値が定数であるため、インターフェイスからの例外「不正な型」(?!)

    static interface userInfo
    {
            File startingFile=new File(".");
            String startingPath="dummy";
            try{
                    startingPath=startingFile.getCanonicalPath();
            }catch(Exception e){e.printStackTrace();}
    }

それを行う多くの方法: インターフェイス、静的な内部クラスのイメージ VS 非静的な内部クラスのイメージ

import java.io.*;
import java.util.*;

public class listTest{
        public interface hello{String word="hello word from Interface!";}

        public static class staticTest{
                staticTest(){}
                private String hejo="hello hallo from Static class with image";
                public void printHallooo(){System.out.println(hejo);}
        }
        public class nonStatic{
                nonStatic(){}
                public void printNonStatic(){System.out.println("Inside non-static class with an image!");}
        }
        public static class staticMethodtest{
                private static String test="if you see mee, you printed static-class-static-field!";
        }

        public static void main(String[] args){
                //INTERFACE TEST
                System.out.println(hello.word);
                //INNNER CLASS STATIC TEST
                staticTest h=new staticTest();
                h.printHallooo();
                //INNER CLASS NON-STATIC TEST
                nonStatic ns=(new listTest()).new nonStatic();
                ns.printNonStatic();
                //INNER CLASS STATIC-CLASS STATIC FIELD TEST
                System.out.println(staticMethodtest.test);
        }
}

出力

hello word from Interface!
hello hallo from Static class with image
Inside non-static class with an image!
if you see mee, you printed static-class-static-field!

関連している

4

6 に答える 6

2

問題は、メソッドの外でコードを書いていることです。これにはクラスが必要であり、コードをメソッド内に配置する必要があります。例えば:

static class UserInfo
{
    public static void myMethod()
    {
        File startingFile = new File(".");
        String startingPath = "dummy";
        try
        {
            startingPath = startingFile.getCanonicalPath();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

これは、java.io.File がインポートされたことを前提としています。

その後、UserInfo.myMethod(); を呼び出すことができます。

java.util.IOException をインポートして、一般的な例外の代わりに IOException をキャッチすることもできます。

また、Java の規則により、クラスとインターフェイスは大文字で始まります。

編集:質問に対する最近のコメントを説明するには:

同様のクラス (さまざまな種類の DVD プレーヤーを考えてみてください) に同じ基本機能 (DVD の再生、停止、一時停止) を持たせたい場合は、インターフェイスを使用します。同様に抽象クラスを使用しますが、すべてのクラスがいくつかの同じことを同じように。

于 2010-04-29T06:28:57.290 に答える
2

私はあなたがこれをしたかったと思います:

static class userInfo
    {
         public static void something() {
            File startingFile=new File(".");
            String startingPath="dummy";
            try{
                    startingPath=startingFile.getCanonicalPath();
            }catch(Exception e){e.printStackTrace();}
         }
    }
于 2010-04-29T05:24:17.740 に答える
1

インターフェイスにコードを入れることはできません。インターフェイスは、オブジェクトがどのように動作するかを説明するだけです。クラスを使用する場合でも、この種のコードはクラス本体に直接ではなく、メソッドに配置する必要があります。

于 2010-04-29T05:13:21.337 に答える
0

インターフェイスに実際のコードを含めることはできません。メソッドのシグネチャと定数のみです。あなたは何をしようとしているのですか?

于 2010-04-29T05:12:26.607 に答える
0

インターフェイスにコードを含めることはできません。メソッドシグネチャだけです。最上位インターフェイスを静的にすることはできません。

ここで Java の学習を開始することをお勧めします。

于 2010-04-29T05:14:33.567 に答える
0

ここに書きたいようですclass

于 2010-04-29T05:17:31.267 に答える