2017-10-19 7 views
5

जावा में मैं इसकोटलिन में कच्चे प्रकार की घोषणा कैसे करें?

private List a; 

//onCreate 
a = new ArrayList() 

लेकिन Kotlin में यह पता चलता है त्रुटि घोषणा कर सकते हैं, यह मेरे विशिष्ट एक प्रकार

private List<String> a 

कभी कभी करने के लिए मजबूर करता मैं एक प्रकार प्रदान करने के लिए नहीं करना चाहते हैं (मैं की जरूरत नहीं है करने के लिए), लेकिन यह Kotlin में त्रुटि दिखाता उदाहरण के लिए जावा में

public abstract class BaseActivity<T extends ViewDataBinding> extends AppCompatActivity { 
//something 
} 

public abstract class BaseFragment { 
private BaseActivity activity; 
//something 
} 

//in kotkin I can't write 
lateinit var activity: BaseAtivity //show error here (I have to specific a type but this is the base class and I do not want to specific a type here). I just want a reference of BaseActivity 

@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof BaseActivity) { //good in java but show error 
               //in kotlin because I have to //specific a type like BaseAtivity<something> 
      BaseActivity activity = (BaseActivity) context; 
      this.mActivity = activity; 
      activity.onFragmentAttached(); 
     } 
    } 

मैं Kotlin में क्या लिख ​​सकते हैं प्राप्त करने के लिए जावा में एक ही कोड

+2

यह ध्यान दिया जाना चाहिए कि आपको जावा में '<>' को छोड़ना नहीं चाहिए। कच्चे प्रकार किसी भी माध्यम से आदर्श नहीं हैं। – Carcigenicate

+0

मुझे चेतावनी देने के लिए धन्यवाद – coinhndp

+0

कम से कम 'बेसएक्टिविटी ' को प्राथमिकता दें। प्री-जावा -5 कोड के साथ इंटरऑपरेशन के लिए कच्चे प्रकार मौजूद हैं। –

उत्तर

4

आप उपयोग कर सकते हैं star projections

उदा

private List<*> a 
+0

@coinhndp आप [उत्तर स्वीकार कर सकते हैं] (https://meta.stackexchange.com/a/5235/348195)। – Moira

1

Docs से उद्धरित: "जावा के कच्चे प्रकार, स्टार अनुमानों में बदला जाता है ListList<*> हो जाता है, अर्थात List<out Any?>!।"

इस प्रकार, आप <*> जैसे स्टार प्रक्षेपण का उपयोग कर सकते हैं।

संबंधित मुद्दे