2017-12-30 58 views
0

私はちょうどKotlinとAndroidスタジオを使い始めました。 MainActivity.ktの場合、私は以下を行います...Androidのクラス内で配列(MutableList)を初期化できません

var tafels: MutableList<MutableList<Int>> = java.util.ArrayList() 
tafels.add(mutableListOf<Int>(2, 2, 4)) 

...すべて正常に動作します。この図に示すように、この要素にはArrayListを追加できます。私はそれを入力するとき

私は、私が作成したクラスに、新しいファイルで同じことをしようとすると、しかし、コードアシストはtafelを認識しない、と私はtafelsを入力した後、したがって何の提案が来ない:

class TafelsSommen(){ 

    var tafels: MutableList<MutableList<Int>> = java.util.ArrayList()    
    tafels.add(mutableListOf<Int>(2, 2, 4)) 
} 

tafelsのクラスTafelsSommenに要素を追加できないのはなぜですか?

答えて

2

まず、リストを作成するための標準のlib関数を使用できます。 ArrayListは型パラメータを指定していないため、以下は型の安全ですが、あなたの型は安全ではありません。

コードを呼び出そうとしています(ここでは、リストに追加する要素をクラスの本文に追加しています)。これは動作しません。 initブロックにそれをラップまたはプロパティの宣言に追加します。もう一度

class TafelsSommen() { 
    val tafels: MutableList<MutableList<Int>> = mutableListOf(mutableListOf()) 

    init { 
     tafels.add(mutableListOf(2, 2, 4)) 
    } 
} 

、クラスを構成することができる方法here’s

「クラスに含めることができる」:

  • コンストラクタと初期化子をブロック
  • ファンクション
  • プロパティ
  • のネストされた内部クラス
  • オブジェクトの宣言

許可されませんあなたのような声明。

+0

MutableListはArrayListではないため、MutableListとして宣言されたものをArrayListとして初期化することはできません – Zoe

+1

すばやく対応いただきありがとうございます!これは私がそれをもっとよく理解するのに役立ちます、ありがとう! – Bram

+0

@Bramあなたの問題を解決するならば、受け入れられた答えをマークしてください。 –

関連する問題