簡體   English   中英

Java Arraylist錯誤

[英]Java Arraylist error

我正在編寫一個Java小類,我想知道這到底是怎么回事:

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){ -

為什么不顯示“文件”? 為什么對象不調用該方法,而是直接將該方法放在那里。 廢話

嘗試下面的代碼,並確保文件具有方法validIndex(int)files.validIndex(index)返回布爾值。

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))不起作用。

另一方面,代碼所在的類(您未在其中包含很多內容)可能包含一個validIndex方法,該方法檢查傳遞的索引在files List中是否為有效索引。

因此, if (validIndex(index)) ,與if (this.validIndex(index))

這可能只是括號錯誤:

if (files.validIndex(index))
{...}  

我將假設validIndex(int i)listFiles(int i)是同一類中的2個方法。

當您在未指定調用對象的情況下調用方法時,默認情況下,將在當前對象上調用該方法。 因此, validIndex(i)等效於調用this.validIndex(i)

這是一個簡化的語法允許不寫this每一次。

但是在某些情況下,使用this可能會很有用:

  • 訪問與參數或局部變量同名的成員。
  • 使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();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM