gpt4 book ai didi

android - Android编程中空值逻辑: Confused

转载 作者:行者123 更新时间:2023-11-29 18:18:17 24 4
gpt4 key购买 nike

我希望这是一个非常简单的问题,在 Android 中什么相当于在 PHP 中执行此操作:

PHP:

函数 BlahBlah ($first_var,$second_var,$optional_var_1=null,$optional_var_2=null) {

在 Android 中,似乎我输入函数的所有内容都必须为所有变量设置一个非空值。虽然我可以添加诸如 if 语句之类的逻辑来检查空值,但为什么我不能简单地传递空值并忽略它们呢?

我的问题围绕着一个函数,该函数将一本书输入到我的应用程序的 sql 数据库中。如果我输入图书的所有信息,如作者、标题、版权、ISBN 等,没有问题,因为我没有提供任何空值。但是,如果我要将版权或 ISBN 保留为 Null 并尝试将它们传递给函数,我会得到一个 nullpointerexception。有时我不需要记录 ISBN 或版权(这是一个例子,而不是真正的应用程序)所以不要制作多个函数,例如 addBook(...) addBookWithNoISBN(...) addBookWithNoCopyright(...) ...更好的方法是什么?

我认为我应该将我的所有变量作为字符串数组发送到函数,也许在函数本身中做一些处理?有没有更好的办法?

我希望人们明白我想说的,非常感谢!

最佳答案

Java 支持称为方法重载的东西,它允许您定义多个具有完全相同名称但具有不同数量/类型的参数的方法:http://download.oracle.com/javase/tutorial/java/javaOO/methods.html

因此,您最终会为每种可能的组合编写单独的方法。然后他们会在需要的地方传入空值,并调用执行核心逻辑的主要方法:

boolean test(int param1, String param2) {
return test(param1, param2, null, null);
}
boolean test(int param1, String param2, String param3) {
return test(param1, param2, param3, null);
}
boolean test(int param1, String param2) {
// Do your logic here
if(param1 == 'foo' && param3 == null)
return false;
if(param2 == param3)
return true;
}

这样一来,无论您传入 2、3 还是 4 个变量都没有关系,因为对于您未传递的内容,最终会使用“空”值调用同一个函数。

这是另一个示例,您有一个可以接受各种输入类型的方法名称:

boolean AddBook(int isbn)
{
Book result = FindBookByISBN(isbn);
return AddBook(result);
}
boolean AddBook(String asin)
{
Book result = FindBookByAmazonId(asin);
return AddBook(result);
}
boolean AddBook(String title, String author)
{
Book result = FindBookByTitleAndAuthor(title, author);
return AddBook(result);
}
boolean AddBook(Book theBook)
{
if(theBook == null)
return false;

return MyBookCollection.Add(theBook);
}

希望对您有所帮助!

关于android - Android编程中空值逻辑: Confused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6961843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com