2017-08-01 11 views
1

私はKotlinがどのようにプロパティの同期を処理するかについてのハンドルを取得しようとしています。私は、このクラスがある場合:プロパティgetters/settersを同期

class Foo { 
    var a = 0 
    var b = 0 
} 

を、私は& bは、すべてのアクセスが同期されていることを確認します。どうすればいい?私は、アノテーション使ってみた:

class Foo { 
    @Synchronized 
    var a = 0 
    @Synchronized 
    var b = 0 
} 

をしかしKotlinは私にコンパイラエラーを与える:

This annotation is not applicable to target 'member property with backing field' 

私はちょうどKotlinにおけるスレッドの安全性に優れたハンドルを取得しようとしています。それは、私がいつもJavaでOCDをしてきたものです。私はKotlinで正しく処理する方法を見つけようとしています。

答えて

6

プロパティで同期することはできませんが、アクセサメソッドで同期することはできます。次の構文を使用します。

class Foo { 
    var a = 0 
     @Synchronized get 
     @Synchronized set 

    //or 

    @get:Synchronized @set:Synchronized 
    var b = 0 
} 
関連する問題