这个。在类内变量等

时间:2017-02-20 22:56:08

标签: constructor

我正在阅读android app并且不明白为什么ListeningQuestion.java中的构造函数在其自己的构造函数中使用this.variable = variable,但只有variable = variable(不是这个) )ListeningQuestionItem.java。它们都在相应的类中声明为variable private。为什么会有差异?有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

你正在寻找的ListeningQuestion.java中声明的构造函数 -

public ListeningQuestion(String listeningFileID, String listeningSoundAddress, String listeningImageAddress,
                         ArrayList<ListeningQuestionItem> listeningQuestionItems) {
    this.listeningFileID = listeningFileID;
    this.listeningSoundAddress = listeningSoundAddress;
    this.listeningImageAddress = listeningImageAddress;
    this.listeningQuestionItems = listeningQuestionItems;

}

如果我们看到构造函数,parameter的名称与private variable的名称相同。

通过指定this,我明确要求将参数值赋给局部变量。 This表示实例为当前类。

如果我不使用this关键字,则该值不会分配给本地私有变量,而是重新分配给参数值本身,因为它的范围较窄。

以这种方式将参数值分配给局部变量是一种常见的惯例。

关于使用this关键字

的一些内容herehere

现在,如果你看到ListeningQuestionItem.java的构造函数, 参数和局部变量的名称因情况而异。并且由于没有歧义,您可以将值分配给私有变量,而不使用this,因为 -

ListeningQuestionID = listeningQuestionID

答案 1 :(得分:0)

根据https://docs.oracle.com/javase/tutorial/java/javaOO

  
    

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。

  

对象具有状态,如果存在与实例字段相同名称的相同局部变量,则可以使用this关键字访问字段。

this.listeningFileID = listeningFileID;

在这种情况下,有一个名为listeningFileID的实例变量,可以使用this访问,另一个是局部变量,它作为参数传递给构造函数。

Java变量名称区分大小写。在第二种情况下

ListeningQuestionContent = listeningQuestionContent;

观察第一个字符,字段名称为 L isteningQuestionContent,并且作为参数传递的局部变量命名为 l isteningQuestionContent。这里我们没有相同的名称,因此this js未使用(尽管这与this.ListeningQuestionContent = listeningQuestionContent;相同)