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