要引用实例变量,我应该使用“this”关键字......
class Foo
{
private int bar;
public Foo(int bar)
{
this.bar = bar;
}
}
或“m_”前缀(匈牙利命名约定,其中m表示“成员变量”)...
class Foo
{
private int m_bar;
public Foo(int bar)
{
m_bar = bar;
}
}
是否有任何一种情况可以提供优势?
答案 0 :(得分:9)
this
是标准的,更具可读性且不易出错。
当您错误地隐藏变量或尝试访问静态代码中的非静态字段时,它会对您有所帮助。
即避免这个
int m_bar;
public Foo(int m_bar)
{
m_bar = m_bar;
}
和 static int m_bar;
int m_bar;
public Foo(int bar)
{
this.bar = m_bar; // a warning static field being accessed as non-static
}
答案 1 :(得分:2)
使用this
。它正是为这种用法提供的Java语法,开发人员熟悉它并帮助减少几个极端情况下的语法错误。
在Java中为字段名称添加前缀的一个可能问题是,生成getter和setter的工具也不会起作用。此外,一些Java Bean工具(如Jackson或GSON)现在需要映射来映射您的对象字段名称。最后,由于它不遵循Java风格或约定,maintenance developer将不会感到高兴。