0

Java のいくつかのクラスで文字列を共有したいのですが、文字列は定数ではないため、通常の方法でpublic static finalは機能しません。

つまり、文字列の値を更新しますが、これは用途によって異なります。

現在、私が使用しているコードは次のとおりです。

public String NewDestination;

 destination = "D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/Uploaded/"; // main location for uploads (CHANGE THIS WHEN USING PREDATOR)
            File theFile = new File(destination + "/" + username);
            theFile.mkdirs();// will create a sub folder for each user (currently does not work, below hopefully is a solution) (DOES NOW WORK)
            System.out.println("Completed Creation of folder");
            NewDestination = destination + username + "/";

上記では、destination + username + "/" を一緒に追加して作成されているため、ログインごとに変更されるため、静的な final にすることはできませんが、別のクラスに渡される値が必要な場合はどうすればよいですか?

編集:

私が今やったことは次のとおりです。

public static String NewDestination;私の FileUploadController.java に追加されました

そして私のMybean.javaに追加System.out.println(FileUploadController.NewDestination);しましたが、それでもnullが出力されます:(

4

3 に答える 3

4

public staticfinalフィールドが必要なようです。

ただし、これにより、他のクラスも変更できるようになります。フィールド
を作成し、他のクラスがそれを読み取れるようにするメソッドを作成することをお勧めします。private staticpublic static getDestination()

于 2013-02-04T15:19:53.047 に答える
0

を変更できないことに注意してくださいString。文字列は不変です。への参照を渡していますが、変更されるStringのは参照Stringであり、基になる ではありません。

各クラスが変化する への参照を必要とする場合、必要に応じてメソッド内でString単に を生成し、String各クラスを呼び出すだけではどうですか。

originatingObject.getDestinationPath();

staticこれは、スレッド化された環境で処理する方が簡単です (確かに、使用法に関していくつかの仮定を行うインスタンスを使用するよりも処理が簡単です)。

于 2013-02-04T15:20:26.110 に答える
0

Java の文字列データ型は不変です。あなたの場合、変数「宛先」に格納されている値が変更されるため、StringBuilder を使用することをお勧めします (これは String の可変コンパニオン クラスです)。

于 2013-02-04T15:33:32.017 に答える