2017-02-12 14 views
0

静的でないArrayListに静的要素を追加する方法はありますか?非静的なArrayListで特定の要素を静的にする方法はありますか?

私はCollaboratorクラスを持っていますが、このクラスにはProjects Arraylistがあります。つまり、プロジェクトクラスにはプロジェクトを編集するメソッドがありますが、編集すると、作成した共同作業者のProject ArrayListの要素は更新されません。

手作業で更新すると、Collaborators ArrayList内でProject Arraylistを実行して、編集中のプロジェクトがどの共同編集者にあるかを検索する必要があります。

メインクラスに静的なProjectオブジェクトを作成しましたが、編集すると動作するようです。しかし、私はメソッド内に静的オブジェクトを作成することはできません。

class Collaborator { 
String name; 
String email; 
ArrayList<Project> projects = new ArrayList<>(); 

私は、全体のArrayListには、静的作ってみましたが、それは私が作成するすべての新しい協力者は私が起こることを望んでいない同じプロジェクトを、持っています。

ありがとうございます。

+0

これを正しく理解している場合:プロジェクトインスタンスの編集内容は、プロジェクトインスタンスのリストに反映されていませんか? – efekctive

+0

'Project'クラスのインスタンスを' Collaborator'クラスの 'projects' ArrayListに追加するためのメソッドを表示します。 –

+0

"私のプロジェクトクラスにはプロジェクトを編集するメソッドがありますが、編集すると要素を更新しません"。どのように 'Project'クラスのインスタンスを編集するためにメソッドを呼び出すのですか? –

答えて

1

私は、おそらくあなたがプロジェクトのコピーを取ってオリジナルをコピーするのではなく、そのコピーを編集することをお勧めしますか?あなたがそれらを取得している、とどこでそれらを編集しているあなたはArrayListのにプロジェクトを入れている

チェック、 - あなたが好きなものを使用している場合:

projects.add(new Project(y)) 

、あなたはコピーを入れていますオリジナルの「y」プロジェクトの「y」を編集すると、コピーは変更されません。

1

非静的なArrayListで特定の要素を静的にする方法はありますか?

これはできません。

それは意味をなさない。

キーワードstaticは、変数とメソッド(および異なるコンテキストのクラス)にのみ意味があります。コレクションの要素は変数ではありません。

コードの関連部分を表示した場合は、とする必要があります。しかし、あなたの現在のアプローチは(彼らが言うように)「間違った木を吠える」ものです。


マイProjectクラスは、プロジェクトを編集する方法がありますが、私が編集したときに、それは私が作成した協力者にプロジェクトのArrayList内の要素を更新しません。

可能性のある説明が多数あります。

あなたが宣言して初期化し ArrayListを、あなたが Projectを編集するメソッドを呼び出し、そして

  • コードProject

  • それに

    を追加

    • :しかし、私たちはコードを参照してくださいする必要があります(方法?)Project編集します。

    +0

    あなたはmain関数を表示できますか? –

    +1

    @AbdelmjidELKIHEL - あなたは私と話していますか? –

    +0

    あなたは正しいです、それは理にかなっていません。私はJavaの初心者です。オブジェクトをArrayListに追加すると、コピーが作成されましたが、ポインタのような参照が追加されると思いました。ご回答有難うございます。私がコピーを作成したと思ったのは、誤って編集していたからです。更新していないからです。しかし、ここの答えのおかげで私はそれを修正しました。ありがとう。 –

    1

    私はあなたの問題を完全には理解していませんでしたが、問題を解決するのを手伝っています。

    私はCollaboratorクラスを持っていますが、このクラスにはProjects Arraylistがあります。つまり、プロジェクトクラスにはプロジェクトを編集するメソッドがありますが、編集すると、作成した共同作業者のProject ArrayListの要素は更新されません。

    正しく実行している場合は不可能です。オブジェクトのプロパティの編集を行うProjectクラスのメソッドを呼び出すとします。それでは、このようなことをする必要があります。

    projects.get(i).function_name() 
    

    あなたが実際のArrayListからオブジェクトを更新しているprojectsのArrayListからi番目Projectオブジェクトの機能を呼び出しています。

    質問のこの部分、my Project class has a method to edit a project, but when I editはおそらくあなたが何か間違っていることを疑うことがあります。

    編集すると、プロジェクトクラスオブジェクトを更新していますか?どのオブジェクトのメソッドを呼び出してそのオブジェクトを更新するのですか?コードを表示することで、問題をより深く理解するのに役立ちます。

    Projectクラスの必須メソッドを呼び出すことによって、常にArrayList<Project> projectsのメンバーオブジェクトを更新できるので、ArrayListを静的にする必要はないと強く信じています。

    +0

    私は何か間違っていました。私はJavaの初心者ですが、アップデートしていないことに気づいたとき、Arraylistにオブジェクトを追加するときに、参照を渡す代わりにコピーが作成されたと思いました。しかし私はそれを間違って編集していた。私は正しいオブジェクトを編集する代わりにコピーを編集していました。ご協力いただきありがとうございます。 –

    関連する問題