除了访问与本地变量同名的成员变量之外,是否还有this
关键字的其他用法
this.x = x
是否有任何其他情况下使用此关键字是有意义的。
答案 0 :(得分:9)
this
关键字的另一个用途是构造函数链接,例如:
class Person {
private String name;
private int age;
public Person() {
//Invoking another constructor
this("John", 35);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
答案 1 :(得分:6)
您可以将当前对象作为参数传递给另一个方法。
答案 2 :(得分:4)
以下几点取自Java docs
this
关键字的最常见原因是因为某个字段被方法或构造函数参数遮蔽。this
关键字在同一个类中调用另一个构造函数。答案 3 :(得分:3)
this
表示实例中的当前实例。
对以下内容有用:
适用用途的一些例子(非详尽无遗):
class myClass
{
private int myVar;
public myClass() {
this(42); // invoke parameterized constructor of current instance
}
public myClass(int myVar) {
this.myVar = myVar; // disambiguate
}
public void another() {
this.second(); // used "just because"
}
private void second() {
System.out.println("whatever");
}
}
答案 4 :(得分:2)
您可以引用字段或调用封闭类的方法
public class Examples {
public class ExamplesInner {
private int x;
public ExamplesInner() {
x = 3; // refers to ExamplesInner.x
Examples.this.x = 3; // refers to Examples.x
}
}
private int x;
}
For full usage, read the java language specification
关键字this只能在实例方法的主体中使用, 实例初始化器或构造函数,或者在初始化器中 类的实例变量。如果它出现在其他任何地方,a 发生编译时错误。
当用作主表达式时,关键字this表示值 这是对实例方法所针对的对象的引用 调用(§15.12),或者被构造的对象。
这个类型是C类,其中出现关键字。
在运行时,所引用的实际对象的类可能是 C类或C的任何子类。
关键字this也用于特殊的显式构造函数 调用语句,它可以出现在一个开头 构造函数体(§8.8.7)。
答案 5 :(得分:2)
从中找到示例: http://javarevisited.blogspot.in/2012/01/this-keyword-java-example-tutorial.html
答案 6 :(得分:0)
this
运算符用作当前正在执行的对象的引用。它关注对象,因此不能也不应该与静态引用一起使用,其中使用类而不是对象。
this
运算符可用于调用this()
this
运算符也避免命名歧义,可用于将当前对象作为函数的引用传递
答案 7 :(得分:0)
this
可让您消除私有成员foo
与传递到foo
的参数constructor
之间的歧义:EX
class bar
{
private int foo;
public Foo(int foo)
{
this.foo =foo;
}
}