2017-10-19 9 views
5

私はこのKotlinで生の型を宣言するには? Javaでは

private List a; 

//onCreate 
a = new ArrayList() 

宣言することができます。しかしKotlinで、それはエラーを示し、それはタイプ

private List<String> a 

時々私は種類を提供したくない特定に私を強制的に(私は必要はありません。 )それは私が達成するためにKotlinに何を書くことができますJavaの

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 のエラーを示していJavaで同じコードが

+2

Javaで '<>'を省略しないでください。生のタイプは、いかなる手段によっても理想的ではありません。 – Carcigenicate

+0

警告ありがとうございました – coinhndp

+0

少なくともBaseActivity が好きです。 Java-5以前のコードとの相互運用のための未加工の型が存在します。 –

答えて

4

を使用できstar projections

例えばDocsから引用

private List<*> a 
+0

@coinhndpあなたは[回答を受け入れる]ことができます(https://meta.stackexchange.com/a/5235/348195)。 – Moira

1

: "Javaの生タイプは、星の投影に変換されListList<*>なり、すなわちList<out Any?>!!。"

したがって、<*>のようなスタープロジェクションを使用できます。

関連する問題