0

クラス Engine を介して Format1 というクラスのインスタンスを 1 つだけ返す必要があります。

 public final class Engine {

     private static Format format;

     public Engine(final Param1 param1, final Param2 param2) {
         Engine.format = new FormatV1(param1);   // FormatV1 implements Format
     }

     static Format getFormat(int condition) {
         switch(condition) {
            case 1 : return format;
         }
     }
 }

これにより、getFormat を介して Format の正しいインスタンスが 1 つだけ返されることが保証されますか?

また、getFormat() を呼び出すクライアントは、フォーマット オブジェクト (まったく状態を持たない) でメソッドを実行する必要がありますが、メソッドに ByteBuffer を渡します (この ByteBuffer は変更される可能性があります)。

 class Client 
 {
     public static void main(String[] args) {

          Format obj = Engine.getFormat(1); // some param
          ByteBuffer buffer;                // read data from disk

          synchronized (obj) {

                 long[] result = obj.method(buffer);

                 if (result == null) {
                      // do something
                 }
          }
     }
 }

同期された構造 here/like this はシリアライズ可能性を保証しますか?

PS:私はJavaに非常に慣れていません。私が読んだ限り、メソッドを同期させることもできましたが、チェック(結果== null)もクリティカルセクションに含める必要があると思うので、同期(objを使用することにしました) 代わりに構築します。これがばかげた質問である場合はご容赦ください。しかし、私の疑問を確認したいと思います。

4

2 に答える 2