在此代码中是否有使用“this”的替代方法?

时间:2021-08-01 23:33:49

标签: java arrays

我有以下代码片段,想知道“this”是如何使用的,以及是否有另一种方法可以实现相同的最终结果。我尝试通过执行 ArrayList a = new ArrayList(); 来生成 ArrayList,但它不包括数字 '1, 2' 并且只有 '4,6'。输出应该是'1, 2, 4, 6'。

我要突出显示我要询问的代码:

int i = 0;
Sequence a = this;

方法:

import java.util.ArrayList;



public class Sequence
{
        private ArrayList<Integer> values;
        public Sequence()
        {
            values = new ArrayList<Integer>();
        }

        public void add(int n)
        {
            values.add(n);
        }

        public String toString()
        {
            return values.toString();
        }

        public Sequence append(Sequence other)
        {
            int i = 0;
            Sequence a = this;

            while(i < other.values.size())
            {
                a.add(other.values.get(i));

                i++;
            }

            return a;

        }
}

测试员/司机:

public class SequenceTester
{
    public static void main(String[] args)
    {

        Sequence obj2 = new Sequence();

        obj2.add(4);
        obj2.add(6);


        Sequence obj = new Sequence();

        obj.add(1);
        obj.add(2);

        Sequence append = obj.append(obj2);

        System.out.println(append);
    }


}

1 个答案:

答案 0 :(得分:2)

<块引用>

想知道“this”是如何使用的

“this”是指类的当前实例。

<块引用>

如果有另一种方法可以达到相同的最终结果。

无需在 append(...) 方法中显式创建 Sequence 变量。

您可以直接调用 add(...) 方法并返回“this”:

    public Sequence append(Sequence other)
    {
        int i = 0;
        //Sequence a = this;

        while(i < other.values.size())
        {
            //a.add(other.values.get(i));
            add(other.values.get(i));

            i++;
        }

        //  return a;
        return this;

    }

类的方法总是对类的当前实例进行操作,因此不需要使用“this”来获取对类的引用。