什么规范支持可选参数?
当前回答
这是一个老问题,甚至在实际的可选类型引入之前,但现在你可以考虑以下几件事: -使用方法重载 - use可选类型,优点是避免传递空值 可选类型是在Java 8中引入的,通常是在第三方lib(如谷歌的Guava)中使用。使用optional作为参数/参数可能被认为是过度使用,因为主要目的是将其用作返回时间。
裁判:https://itcodehub.blogspot.com/2019/06/using-optional-type-in-java.html
其他回答
如果您计划使用具有多个参数的接口, 可以使用以下结构模式,并根据您的需求实现或重写apply方法。
public abstract class Invoker<T> {
public T apply() {
return apply(null);
}
public abstract T apply(Object... params);
}
Java 5.0中有可选参数。只需像这样声明你的函数:
public void doSomething(boolean... optionalFlag) {
//default to "false"
//boolean flag = (optionalFlag.length >= 1) ? optionalFlag[0] : false;
}
你可以调用doSomething();或doSomething(真正的);现在。
Java中没有可选参数。你能做的就是重载函数,然后传递默认值。
void SomeMethod(int age, String name) {
//
}
// Overload
void SomeMethod(int age) {
SomeMethod(age, "John Doe");
}
Java现在在1.8中支持可选类型,我在android上编程,所以我使用空值,直到我可以重构代码以使用可选类型。
Object canBeNull() {
if (blah) {
return new Object();
} else {
return null;
}
}
Object optionalObject = canBeNull();
if (optionalObject != null) {
// new object returned
} else {
// no new object returned
}
你可以这样使用:
public void addError(String path, String key, Object... params) {
}
params变量是可选的。它被视为对象的可空数组。
奇怪的是,我在文档中找不到任何关于这个的东西,但它是有效的!
这是Java 1.5及以上版本的“新功能”(Java 1.4或更早版本不支持)。
我看到用户bhoot在下面也提到了这一点。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap