2012-03-23 11 views
1

入力が名前であるアドレス帳エントリを削除しようとしていますが、 java:148エラー:互換性のないタイプ return fileToDelete.delete();互換性のないタイプはありますか?

required: AddressBookEntry 
found: boolean 

1エラー

問題のコードは次のとおりです。

public class AddressBookDelegateImpl implements AddressBookDelegate { 

    private File userHomeDir; 

    private File addressBookDirectory; 
    private String replaceSpacesWithUnderScores(String string) { 
     return string.replaceAll(" ", "_").toLowerCase(); 
    } 

    public AddressBookEntry deleteAddressBookEntry(String name) 
           throws AddressBookDelegateException { 

     try{ 
      String dname = replaceSpacesWithUnderScores(name); 
      File fileToDelete = new File(addressBookDirectory, dname); 
      return fileToDelete.delete() ; 
     } catch(NullPointerException e) { 
      throw new AddressBookDelegateException("Could not find the file", e); 
     } 
     } 
    } 

答えて

0

File.delete()リターンブール...

0

はまあエラーがすでに非常によく、それを説明しています。 の削除は、削除が成功した場合はブール値を返します。したがって、trueの場合はその戻り値をチェックして、削除したAddressBookEntryを返します。

2

あなたのメソッドが返すと、それの宣言でAddressBookEntry

public AddressBookEntry deleteAddressBookEntry(String name) 

return文氏は述べていながら:

return fileToDelete.delete() ; 

あなたはこのようなbooleanとしてAddressBookEntry戻り値の型を宣言する検討する必要があります:

public boolean deleteAddressBookEntry(String name) 
+0

をうんおかげでInfactは私がconsequently.Iも持っていたDeleteActionクラスを持っていたインターフェイスを変更することを完了: – CCharles

+0

うんおかげでInfactは私は結果的にインタフェースを変更することを完了します私はDeleteActionクラスも持っていました:try { AddressBookEntry addressBookEntry = addressBookDelegate.deleteAddressBookEntry(name); – CCharles

+0

今コンパイルします。アプリケーションでは、新しいアドレスを追加したり、ユーザーに名前を入力したり、アドレス帳のすべての名前を表示したりして、1つのエントリの詳細を表示できます。今私達は削除する名前を入力するようにユーザーに求めるdelete関数を組み込んでいます。私は次にアドレス帳としてその名前の属性を取得し、今このエントリを削除するはずです。提案された変更を実行すると、NULLポインタ例外が発生します。 – CCharles

0

Javaでは、メソッドのターンタイプはメソッド宣言で定義されます。 は、だからあなたの例では、あなたが持っている:だから

public AddressBookEntry deleteAddressBookEntry(String name)throws AddressBookDelegateException { 

     try{ 
      String dname = replaceSpacesWithUnderScores(name); 
      File fileToDelete = new File(addressBookDirectory, dname); 
      return fileToDelete.delete() ; //this returns a boolean 
     } catch(NullPointerException e) { 
      throw new AddressBookDelegateException("Could not find the file", e); 
     } 
    } 

を、あなたが何をしたいのかおそらくあなたの復帰方法を変更したくない場合は、代わりにこのコードを試してみてください:

public boolean deleteAddressBookEntry(String name)throws AddressBookDelegateException { 

     try{ 
      String dname = replaceSpacesWithUnderScores(name); 
      File fileToDelete = new File(addressBookDirectory, dname); 
      return fileToDelete.delete() ; //this returns a boolean 
     } catch(NullPointerException e) { 
      throw new AddressBookDelegateException("Could not find the file", e); 
     } 
    } 

fileToDelete.delete()メソッドの結果を返します。

0

は以下の通りあなたの方法deleteAddressBookEntryを変更してください。

public Boolean deleteAddressBookEntry(String name) 
       throws AddressBookDelegateException { 
      try { 
       String dname = replaceSpacesWithUnderScores(name); 
       File fileToDelete = new File(addressBookDirectory, dname); 
       if(fileToDelete.exists()) 
        return fileToDelete.delete(); 
      } catch (NullPointerException e) { 
       throw new AddressBookDelegateException("Could not find the file", e); 
      } 
      return false; 
     } 
関連する問題