2017-04-19 5 views
-1

私は、リスト内の不変不変オブジェクトのリストを含むオブジェクトだけでなく、オブジェクト型の合計を作成しようとしています再/不変オブジェクトリスト

背景が含まれている不変オブジェクトを作成します。

私は、何を意味するかを試してみるために、少しsudoの要点を作成しました。

Gist - Adjusting an immutable object that contains an immutable object list.

説明

私の例では、私は現在、それをやっている方法を示し、それは仕事をしません。しかし、すべての場合にそうではありません。

私のVeggieCartViewには、recyclerviewがあり、新しい/保存済みのVeggieCartで埋められます。

各VeggieCartには野菜のリストがあります。 Veggie totalsなど...

次にヘルパークラスVeggieChangerを持っていて、rx.Consumer<Veggie[]>が含まれていて、veggieビューから1:1のveggieの変更を受け入れます。

VeggieCartViewは消費者を設定するので、いずれかの野菜が変更された場合、変更されたカートファクトリメソッドを使用してカートが更新されます。アダプターは、そのリストを変更/検索するために使用されます。

ワーキングなく

これは、一度に1つの変更に適しています、しかし、バッチ処理の変更は、同時実行例外を投げています。

私の主義は実行可能ではなく、大部分の定型句は表示されず、私のアプローチの一部または全部に根本的に間違っているかもしれないことが分かります。それで、私はまだ私がやろうとしていることをよりうまく実装する方法について、誰かに助言を与えることができると願っています。

さらに詳しい情報が必要な場合は、お尋ねください。ご提供いただきありがとうございます。

Jon

+1

「不変オブジェクトを調整する」という言葉は矛盾しています。残りは率直に分かりません。 – EJP

+0

@EJP Yikes Lol。あなたは正しい、私の質問のタイトルは、文字通り意味の意味では正しいとは言えません。私はそれを変更します。たぶん「Re/Create immutable ...」他のすべてが理解できない限り、それは明らかにちょっとした発言です。それがどのように役立つかはわかりません。それが参考になることを意図している場合は、詳しく説明してください。しかしタイトルチップのおかげですべて同じ。 –

+0

@EJP [OK]を、ドライブバイのおかげで! –

答えて

0

私の主な問題を解明しました。私VeggieCartViewにこれを追加することにより

public void bagAllCanned() { 
    final Veggie[] canned = new Veggie[cart.canTotal()]; 
    final Veggie[] bagged = new Veggie[canned.length]; 
    int t = 0; 
    final List<Veggie> veggies = cart.veggies(); 
    for (int i = 0; i < veggies.size(); i++) { 
    final Veggie veggie = veggies.get(i); 
    if (veggie.canned()) { 
     canned[t] = veggie; 
     if (veggie instanceof Potato) 
     bagged[t] = Potato.can(veggie); 
     else if (veggie instanceof Tomato) 
     bagged[t] = Tomato.can(veggie); 
     t++; 
    } 
    } 
    for (int i = 0; i < canned.length; i++) { 
    veggieChange(canned[i], bagged[i]); 
    } 
} 

それは同時実行エラーを修正します。

私のアプローチが正しいかどうかはまだ分かりません。だから、質問はほとんど答えられていますが、意見はまだ非常に歓迎されています。

関連する問題