在Java中使用this
关键字的最佳实践是什么?例如,我有以下类:
class Foo {
Bar bar;
public Foo(Bar bar) {
this.bar = bar;
}
}
这很好,但是Java足够聪明,如果我将构造函数中的语句改为
bar = bar;
那么为什么要使用this
关键字呢?(我意识到在某些情况下,使用它是完全必要的,我只是要求这样的情况)。实际上,我倾向于纯粹为了可读性而使用关键字,但常见的做法是什么呢?例如,在商店中到处使用它会让我的代码看起来有点凌乱
boolean baz;
int someIndex = 5;
this.baz = this.bar.getSomeNumber() == this.someBarArray[this.someIndex].getSomeNumber();
显然,这是一段糟糕的代码,但它说明了我的示例。在这些情况下,这仅仅是个人喜好吗?
发布于 2010-03-12 06:16:12
当你有一个与字段同名的参数时,你应该使用它,否则你会遇到问题。它可以编译,但不一定会做你想要的事情。
至于其他任何地方,除非为了可读性而需要,否则不要使用它。如果你到处使用它,你20%的代码将包含'this‘这个单词!
发布于 2010-03-12 08:13:01
this
关键字是指调用某个方法的类的对象。
例如:
public class Xyz {
public Xyz(Abc ob)
{
ob.show();
}
}
public class Abc {
int a = 10;
public Abc()
{
new Xyz(this);
}
public void show()
{
System.out.println("Value of a " + a);
}
public static void main(String s[])
{
new Abc();
}
}
在Abc()
中,我们调用Xyz()
,它需要Abc类的对象。所以我们可以传递this
而不是新的Abc()
,因为如果我们在这里传递新的Abc()
,它会一次又一次地调用它自己。
我们还用它来区分类的变量和方法的局部变量。e.g
class Abc {
int a;
void setValue(int a)
{
this.a = a;
}
}
这里this.a
是指Abc类的变量a。因此与使用新的Abc().a;
具有相同的效果。
所以你可以说this
指的是当前类的对象。
发布于 2010-03-12 06:16:30
public Foo(Bar bar) {
this.bar = bar;
}
不同于
public Foo(Bar bar) {
bar = bar;
}
在第二种情况下,作用域中的bar是参数,因此您将其分配给自己。this.bar
仍然是null
。
https://stackoverflow.com/questions/2429062
复制相似问题