我正在阅读android app并且不明白为什么ListeningQuestion.java
中的构造函数在其自己的构造函数中使用this.variable = variable
,但只有variable = variable
(不是这个) )ListeningQuestionItem.java
。它们都在相应的类中声明为variable
private
。为什么会有差异?有什么帮助吗?
答案 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
关键字
现在,如果你看到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;
相同)