gpt4 book ai didi

java - 在方法内部使用 "this"(不适用于调用方法、构造函数或变量)

转载 作者:行者123 更新时间:2023-12-02 04:01:11 25 4
gpt4 key购买 nike

我尝试在不使用 Vector 类中的构造函数参数的情况下更改 vector 的容量。因此,我创建了一个 MyVector 类,并从 Vector 扩展了它。这段代码中一切正常,但我无法理解在 setCapacityIncrement(intcapacityIncrement) 方法中使用“this”。

public class App {
public static void main(String [] args)
{
MyVector<Integer> v = new MyVector<>(4);

System.out.printf("Capacity=%d%n", v.capacity());

for (int i = 0; i < 5; ++i)
v.add(i);

System.out.printf("Capacity=%d%n", v.capacity());

v.setCapacityIncrement(10);

for (int i = 0; i < 5; ++i)
v.add(i);

System.out.printf("Capacity=%d%n", v.capacity());
}
}

MyVector 类:

class MyVector<T> extends Vector<T> {
public MyVector()
{
super();
}

public MyVector(int capacity)
{
super(capacity);
}

public MyVector(Collection<? extends T> coll)
{
super(coll);
}

public MyVector(int capacity, int capacityIncrement)
{
super(capacity, capacityIncrement);
}

public void setCapacityIncrement(int capacityIncrement)
{
this.capacityIncrement = capacityIncrement;
}
}

最佳答案

您需要this.capacityIncrement,因为该字段被参数capacityIncrement隐藏,因为它们具有相同的名称。

如果您这样做capacityIncrement =capacityIncrement;,您将为capacityIncrement参数分配相同的值,但这不会产生任何效果。

如果它们没有相同的名称,则不需要this,如下所示:

public void setCapacityIncrement(int increment)
{
capacityIncrement = increment;
}

根据您的编辑,在 MyVector 类中拥有 capacityIncrement 字段也是一个坏主意,因为在父 vector

这会导致 VectorcapacityIncrement 字段被您自己的字段遮盖。

关于java - 在方法内部使用 "this"(不适用于调用方法、构造函数或变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com