Java 数组列表错误
Java Arraylist error
我正在写一个 java 小 class 我想知道这里到底发生了什么:
public void listFile(int index)
{
if(validIndex(index)) {
String filename = files.get(index);
System.out.println(filename);
}
}
然而,我写道:
public void listFile(int index)
{
if files.validIndex(index){
String filename = files.get(index);
System.out.println(filename);
}
else {
System.out.println("malo");
}
}
所以,勉强相等,除非:
我写了 — if files.validIndex(index){
—
示例说 — if validIndex(index){
—
为什么不显示 'files.'?
为什么对象不调用该方法,而是直接将方法放在那里。好像废话。
尝试下面的代码并确保 files 有方法 validIndex(int)
和 files.validIndex(index)
returns boolean.
public void listFile(int index){
if (files.validIndex(index)){ // make sure files.validIndex(index) returns boolean
String filename = files.get(index);
System.out.println(filename);
} else {
System.out.println("malo");
}
}
我假设 files
是一个 ArrayList(基于标题)。
ArrayList 没有 validIndex
方法,因此 if (files.validIndex(index))
不起作用。
另一方面,您的代码所在的 class(您没有包含太多代码)可能包含一个 validIndex
方法,该方法检查传递的索引是否是有效索引在 files
列表中。
因此 if (validIndex(index))
,与 if (this.validIndex(index))
相同。
这里可能只是括号错误:
if (files.validIndex(index))
{...}
我假设 validIndex(int i)
和 listFiles(int i)
是同一个 class 中的 2 个方法。
当您在调用方法时未指定调用的对象,默认情况下,该方法将在当前对象上调用。所以 validIndex(i)
相当于调用 this.validIndex(i)
.
这是一种语法简化,允许不每次都写this
。
但在某些情况下使用 this
会很有用:
- 访问与参数或局部变量同名的成员。
- 在内部 class 及其父 class 之间共享相同名称的 2 个方法之间存在差异(您需要为
this
使用特殊语法)。
Class A {
Class B{
void bar(){
foo(); // calling B foo
A.this.foo(); // calling A foo
}
void foo(){}
}
int b;
void foo(){}
void do(int b){
this.b = b; // assign the value of the parameter to the member b.
foo(); // calling A foo
(new B()).bar();
}
}
我正在写一个 java 小 class 我想知道这里到底发生了什么:
public void listFile(int index)
{
if(validIndex(index)) {
String filename = files.get(index);
System.out.println(filename);
}
}
然而,我写道:
public void listFile(int index)
{
if files.validIndex(index){
String filename = files.get(index);
System.out.println(filename);
}
else {
System.out.println("malo");
}
}
所以,勉强相等,除非:
我写了 — if files.validIndex(index){
—
示例说 — if validIndex(index){
—
为什么不显示 'files.'? 为什么对象不调用该方法,而是直接将方法放在那里。好像废话。
尝试下面的代码并确保 files 有方法 validIndex(int)
和 files.validIndex(index)
returns boolean.
public void listFile(int index){
if (files.validIndex(index)){ // make sure files.validIndex(index) returns boolean
String filename = files.get(index);
System.out.println(filename);
} else {
System.out.println("malo");
}
}
我假设 files
是一个 ArrayList(基于标题)。
ArrayList 没有 validIndex
方法,因此 if (files.validIndex(index))
不起作用。
另一方面,您的代码所在的 class(您没有包含太多代码)可能包含一个 validIndex
方法,该方法检查传递的索引是否是有效索引在 files
列表中。
因此 if (validIndex(index))
,与 if (this.validIndex(index))
相同。
这里可能只是括号错误:
if (files.validIndex(index))
{...}
我假设 validIndex(int i)
和 listFiles(int i)
是同一个 class 中的 2 个方法。
当您在调用方法时未指定调用的对象,默认情况下,该方法将在当前对象上调用。所以 validIndex(i)
相当于调用 this.validIndex(i)
.
这是一种语法简化,允许不每次都写this
。
但在某些情况下使用 this
会很有用:
- 访问与参数或局部变量同名的成员。
- 在内部 class 及其父 class 之间共享相同名称的 2 个方法之间存在差异(您需要为
this
使用特殊语法)。
Class A {
Class B{
void bar(){
foo(); // calling B foo
A.this.foo(); // calling A foo
}
void foo(){}
}
int b;
void foo(){}
void do(int b){
this.b = b; // assign the value of the parameter to the member b.
foo(); // calling A foo
(new B()).bar();
}
}