我有一个问题。
请不要将其标记为重复项,只需回答一次即可。我找不到针对此特定情况/条件的答案,如果您认为它具有特定的答案,则仅标记为重复。将其标记为重复使我的问题仍然是没有答案的问题。
使用/不使用 this 作为关键字来调用方法之间有什么区别?哪个更好?
该问题专门针对单个班级。
请查看下面的示例代码以完全理解该问题。
public class ThisSample {
public static void main(String[] args) {
ThisSample sample = new ThisSample();
sample.methodOne();
}
public void methodOne() {
System.out.println("Method 1 called");
this.methodTwo(); //Line 1
methodTwo(); // Line 2
}
public void methodTwo() {
System.out.println("Method 2 called");
}
}
代码中的两行(第一行和第二行)有什么区别(优点/缺点/含义)?
感谢与问候, 亚德文德拉
答案 0 :(得分:0)
“此”任务是将对象属性与方法参数区分开。在呈现的代码中,此的用法无效。但是,最常见的用法类似于以下示例:
public class Service {
private ServiceA serviceA;
private ServiceB serviceB;
// Here 'this' is used to make sure that class instance
// properties are filled with constructor parameters
public Service(ServiceA serviceA, ServiceB serviceB) {
this.serviceA = serviceA;
this.serviceB = serviceB;
}
}
答案 1 :(得分:0)
this
用于指定您正在谈论类 ThisSample 的当前实例中的方法 methodTwo 。
如果您还有另一个名为AnotherSample
的课程:
public class AnotherSample{
public static void methodThree()
{
// some code
}
}
您可以按照以下说明AnotherSample.methodThree();
来使用方法 methodThree 。
总而言之:this
仅指定您使用的是当前正在编码的类的实例。
答案 2 :(得分:0)
在本例中,您已经给出了什么区别。让我稍微修改一下您的代码:
public class ThisSample {
int variable;
public static void main(String[] args) {
ThisSample sample = new ThisSample();
sample.methodOne(3);
sample.methodTwo(5);
}
public void methodOne(int variable) {
this.variable = variable;
System.out.println("variable is: " + this.variable);
}
public void methodTwo(int variable) {
variable = variable;
System.out.println("variable is: " + this.variable);
}
}
在这里,对于方法2,必须使用this.variable在实例变量中设置值。否则,这两种方法都将在此处打印3。第二种方法也是打印三种,因为您在方法一中设置了3。
现在在方法2中,
variable =变量
line,两个变量都是方法2的参数。但是当您编写时,
this.variable =变量;
您正在说的是,左边的是 this 对象的实例变量,右边的部分是 this 对象的实例变量。
编辑:
如果您想知道“哪个更受欢迎”,那么也请参见此链接。这里所说的“冗余”。链接为:https://softwareengineering.stackexchange.com/a/113434/162116
这里,也有人说,如果我确实需要这样做来推断实例变量,则应该重构代码。