2016-01-02 55 views
3

以下是我們從文檔知道:public財產的getter不能是私有的(似乎很合乎邏輯的),所以:物業無障礙在科特林

@Inject 
var repository: MyExampleRepository? = null 
    private get 

將無法​​編譯。 好吧,也許我們可以讓財產private和定義設置器public

@Inject 
private var repository: MyExampleRepository? = null 
    public set 

這將編譯和值實際上將被注入,但我仍然不能在代碼中使用此,所以:

service.repository = null

給出編譯錯誤:

Kotlin: Cannot access 'repository': it is 'private' in 'MyService' 

我想知道是否有可能擁有公共二傳手的私人財產。

回答

2

這是一個衆所周知的問題:KT-10385

Kotlin doesn't generate setter method for the following code:

private val someProperty: Integer 
public set 

The intention is to generate a set only property. Use case including spring dependency injection.