什么规范支持可选参数?
当前回答
在JDK>1.5中,你可以这样使用它;
public class NewClass1 {
public static void main(String[] args) {
try {
someMethod(18); // Age : 18
someMethod(18, "John Doe"); // Age & Name : 18 & John Doe
} catch (Exception e) {
e.printStackTrace();
}
}
static void someMethod(int age, String... names) {
if (names.length > 0) {
if (names[0] != null) {
System.out.println("Age & Name : " + age + " & " + names[0]);
}
} else {
System.out.println("Age : " + age);
}
}
}
其他回答
你可以像这样使用方法重载。
public void load(String name){ }
public void load(String name,int age){}
你也可以使用@Nullable注释
public void load(@Nullable String name,int age){}
简单地传递null作为第一个参数。
如果你传递相同类型的变量,你可以使用这个
public void load(String name...){}
Java中不能使用默认参数。在c#, c++和Python中,我们可以使用它们。
在Java中,我们必须使用两个方法(函数),而不是一个具有默认参数的方法。
例子:
Stash(int size);
Stash(int size, int initQuantity);
http://parvindersingh.webs.com/apps/forums/topics/show/8856498-java-how-to-set-default-parameters-values-like-c-
Java 5.0中有可选参数。只需像这样声明你的函数:
public void doSomething(boolean... optionalFlag) {
//default to "false"
//boolean flag = (optionalFlag.length >= 1) ? optionalFlag[0] : false;
}
你可以调用doSomething();或doSomething(真正的);现在。
我们可以通过方法重载或使用DataType…
方法重载:
RetDataType NameFnc(int NamePsgVar)
{
// |* Code Todo *|
return RetVar;
}
RetDataType NameFnc(String NamePsgVar)
{
// |* Code Todo *|
return RetVar;
}
RetDataType NameFnc(int NamePsgVar1, String NamePsgVar2)
{
// |* Code Todo *|
return RetVar;
}
最简单的方法是
| * |数据类型……可选参数
RetDataType NameFnc(int NamePsgVar, String... stringOpnPsgVar)
{
if(stringOpnPsgVar.length == 0) stringOpnPsgVar = DefaultValue;
// |* Code Todo *|
return RetVar;
}
这是一个老问题,甚至在实际的可选类型引入之前,但现在你可以考虑以下几件事: -使用方法重载 - use可选类型,优点是避免传递空值 可选类型是在Java 8中引入的,通常是在第三方lib(如谷歌的Guava)中使用。使用optional作为参数/参数可能被认为是过度使用,因为主要目的是将其用作返回时间。
裁判:https://itcodehub.blogspot.com/2019/06/using-optional-type-in-java.html
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 在Hibernate中重新连接分离对象的正确方法是什么?
- 应该……接住环内还是环外?