我正嘗試在Kotlin中使用伴隨對象工廠方法(相當於Java中的靜態工廠方法)創建嵌套內部類。這是我的代碼的簡化版本。內嵌類Kotlin工廠
class OuterClass {
var myData:List<MyData> = List<>() //gets populated elsewhere
fun getItemFragment(position:Int) : Fragment() {
return InnerClass.Factory.newInstance(position)
}
inner class InnerClass : Fragment() {
companion object Factory {
fun newInstance(position:Int) : InnerClass {
var ic : InnerClass = InnerClass()
var bundle:Bundle = Bundle()
bundle.putInt("index", position)
ic.arguments = bundle
return ic
}
}
override fun onCreateView(inflater:LayoutInflater, container: ViewGroup, savedInstanceState:Bundle): View? {
//create and return view, omitted. Need access to myData
}
}
的compilier亮點「同伴」,並稱「修改的伴侶是不適用的內部類中」,這也凸顯了將InnerClass()電話,稱「表達式是嵌套類工廠無法訪問」,用「內「關鍵字使班級內在。
如何在Java中使用靜態工廠方法實現我想要實現的目標?
你不應該做一個片段的內部類,因爲它需要一個零參數的構造函數。更多關於該主題:http://stackoverflow.com/questions/15571010/fragment-inner-class-should-be-static –