Java 不兼容的类型?

Java 不兼容的类型?,java,Java,我试图删除输入为name的通讯簿条目,但我得到 java:148错误:不兼容的类型 返回fileToDelete.delete() 1错误 有关守则是: public class AddressBookDelegateImpl implements AddressBookDelegate { private File userHomeDir; private File addressBookDirectory; private String replaceSp

我试图删除输入为name的通讯簿条目,但我得到 java:148错误:不兼容的类型 返回fileToDelete.delete()

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);
        }
      }
     }

File.delete()。如果删除成功与否,delete方法将返回一个布尔值。因此,您应该检查返回值是否为true,然后返回您已删除的AddressBookEntry。

您的方法返回,并在其声明中返回
AddressBookEntry

public AddressBookEntry deleteAddressBookEntry( String name )
而返回声明说:

 return fileToDelete.delete() ;

您可能想考虑声明<代码> AddiSsBooSosivs>代码>返回类型为<代码>布尔< /代码>如下:

public boolean deleteAddressBookEntry( String name )

在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()
方法的结果。

请根据以下内容修改方法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;
        }

是的,谢谢你做了那件事,结果我改变了接口。我还有一个DeleteAction类,它有:是的,谢谢你做了那件事,结果我改变了接口。我还有一个DeleteAction类,它有:try{AddressBookEntry AddressBookEntry=addressBookDelegate.deleteAddressBookEntry(名称);现在已编译。该应用程序允许用户添加新地址,通过要求用户输入姓名查看一个条目的详细信息,查看通讯簿中的所有姓名。现在,我们合并了一个删除功能,要求用户输入要删除的姓名。然后,我将该姓名的属性检索为addressbookentry,现在是supposed删除此项。当我使用建议的更改运行时,我得到一个空指针异常!确定我已将AddressBookGuiimpl类修改为:String name=readInput();DeleteAddressActionArgument DeleteAddressActionArgument=new DeleteAddressActionArgument(name);ActionResult ActionResult=controller.execute(DeleteAddressActionArgument);DeleteAddressActionResult DeleteAddressActionResult=(DeleteAddressActionResult)actionResult;AddressBookEntry AddressBookEntry=DeleteAddressActionResult.getAddressBookEntry();removeAddressBookEntry(AddressBookEntry);}
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;
        }