我有以下代码片段,想知道“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);
}
}
答案 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”来获取对类的引用。