-3

タイプオブジェクトを使用していて、ループ内にデータを入力し、最後に内部のデータをクリアしたいのですが、それをクリアするオプションが表示されず (.+CTRL SPACE を使用)、新しいものを作成したくありませんオブジェクトタイプを一度だけ作成したいので、そのインスタンスをクリアする回避策はありますか?

次のことをspecObjectに対して一度だけ実行したい、つまりインスタンスタイプのリストまたはオブジェクトを作成し、このオブジェクト内のデータを埋めるループがあるよりも、終了してspecObjectで新しいインスタンスを作成したい前にそれをクリアしたい、どうすればいいですか?

List<Object> itemObject = null;
        Object specObject = null;

        // Check instance type whether is list or specific object instance
        if (multiplicity.equals(MULTI_N)) {
            itemObject = new ArrayList<Object>();
            return itemObject;
        } else if (multiplicity.equals(MULTI_1)) {
            return specObject;
        } else {
            return specObject;
        }
4

1 に答える 1

1

clearオブジェクトでメソッドを呼び出すことができListます。これにより、新しいインスタンスを作成する必要なく、すべての要素が削除されます。ドキュメントはこちらです。

オブジェクト参照に注意してください

終了して specObject に新しいインスタンスを作成したい場合、前にそれをクリアしたいのですが、どうすればよいですか?

リストがあるとしましょう:

ArrayList<String> strings = new ArrayList<String>();

このリストにいくつかの文字列オブジェクトを追加すると:

strings.add("Hello");
strings.add("There");
strings.add("StackOverflow");

次に、オブジェクトを無効にしstringsます。

strings = null;

リスト内のすべての要素を効果的に削除しましたか? なんで?を宣言するときArrayList<String> strings;、新しいオブジェクトを作成していません。オブジェクトへの新しい参照 (ポインター) を作成しています。これを説明するには:

String s = "Hello";
String s2 = s; // s2 points to the same object that s points to.
String s3 = "Another String"; // S3 points to a different object.

この規則の 1 つの例外は、次のように宣言する場合です。

String s = "Hello";
String s2 = "Hello"; // s2 will point to the same object as s.

オブジェクトが何も指されていない場合、そのオブジェクトはガベージ コレクターによって削除されます。したがって、次のように宣言すると効果的です。

strings = null;

String追加したすべての子オブジェクトを削除しています。

于 2013-05-05T12:11:53.847 に答える