本问题已经有最佳答案,请猛点这里访问。

是否可以在Java中设置默认的方法参数值?

例子:如果有方法

public int doSomething(int arg1, int arg2)

{

//some logic here

return 0;

}

是否可以修改给定的方法,以便能够使用和不使用参数来调用它?

例子:

doSomething(param1, param2);

doSomething();

谢谢!

基本上和这个一样:"Java支持默认的参数值吗?",stackoverflow.com/questions/997482/…

您可以通过方法重载来实现这一点。

public int doSomething(int arg1, int arg2)

{

return 0;

}

public int doSomething()

{

return doSomething(defaultValue0, defaultValue1);

}

通过创建此无参数方法,您允许用户使用在无参数方法实现中提供的默认参数调用ParameterFull方法。这称为重载方法。

我就是这么用的:)

如果参数类型相同,则可以使用varargs:

public int something(int... args) {

int a = 0;

int b = 0;

if (args.length > 0) {

a = args[0];

}

if (args.length > 1) {

b = args[1];

}

return a + b

}

但是这样你就失去了各个论点的语义,或者

有一个方法重载,它将调用中继到参数化版本

public int something() {

return something(1, 2);

}

或者,如果该方法是某种初始化过程的一部分,则可以改用生成器模式:

class FoodBuilder {

int saltAmount;

int meatAmount;

FoodBuilder setSaltAmount(int saltAmount) {

this.saltAmount = saltAmount;

return this;

}

FoodBuilder setMeatAmount(int meatAmount) {

this.meatAmount = meatAmount;

return this;

}

Food build() {

return new Food(saltAmount, meatAmount);

}

}

Food f = new FoodBuilder().setSaltAmount(10).build();

Food f2 = new FoodBuilder().setSaltAmount(10).setMeatAmount(5).build();

然后处理食物对象

int doSomething(Food f) {

return f.getSaltAmount() + f.getMeatAmount();

}

生成器模式允许您稍后添加/删除参数,并且不需要为它们创建新的重载方法。

+1用于提及构建器模式。

+1对于使用varargs,我很少看到开发人员使用它。

不。Java不支持默认参数,如C++。您需要定义一个不同的方法:

public int doSomething()

{

return doSomething(value1, value2);

}

您不能为参数声明默认值,比如c(我相信)允许您这样做,但是您可以简单地创建一个重载。

public int doSomething(int arg1, int arg2) {

//some logic here

return 0;

}

//overload supplies default values of 1 and 2

public int doSomething() {

return doSomething(1, 2);

}

如果您要做这样的事情,请帮助其他使用代码的人,并确保在javadoc注释中提到您使用的默认值是什么!

C不允许使用可选或默认参数。这样做的语言是例如C++和Python。

在Java中默认值是不可能的。我处理这一问题的首选方法是重载该方法,这样您可能会遇到如下情况:

public class MyClass

{

public int doSomething(int arg1, int arg2)

{

...

}

public int doSomething()

{

return doSomething(, );

}

}

希望我不会误解这个文档,但是如果你使用Java 1.8,在理论上,你可以通过在你实现的接口中定义一个默认方法("防御者方法")的工作实现来完成这样的事情。

interface DoInterface {

void doNothing();

public default void remove() {

throw new UnsupportedOperationException("remove");

}

public default int doSomething( int arg1, int arg2) {

val = arg1 + arg2 * arg1;

log("Value is:" + val );

return val;

}

}

class DoIt extends DoInterface {

DoIt() {

log("Called DoIt constructor.");

}

public int doSomething() {

int val = doSomething( 0, 100 );

return val;

}

}

然后,不管怎样称呼它:

DoIt d = new DoIt();

d.doSomething();

d.soSomething( 5, 45 );

可以使用不同的参数重载方法:

public int doSomething(int arg1, int arg2)

{

//some logic here

return 0;

}

public int doSomething(

{

doSomething(0,0)

}

java设置默认参数_关于java:如何设置默认方法参数值?相关推荐

  1. java function获取参数_「Java容器」ArrayList源码,大厂面试必问

    ArrayList简介 ArrayList核心源码 ArrayList源码分析 System.arraycopy()和Arrays.copyOf()方法 两者联系与区别 ArrayList核心扩容技术 ...

  2. java命令行参数_一个 java 命令行参数顺序的坑

    tream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据.将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传输, ...

  3. java 反射 不定参数_关于 Java 中的 不定参数

    简单修改 JAVA中可以使用不定参数, 例如 public void test(String ...args){...} 这里test方法可以传入参数的情况是: 1.不使用参数,如test() 2.使 ...

  4. java修改配置文件参数_在java类中获取在.properties配置文件中设置的参数

    如何获取.properties配置文件中的参数,我在网上查了半天没弄明白,后来在以前的项目中找到了,就写下来,避免遗忘. 1.配置文件:message_product.properties total ...

  5. java 启动内存参数_请问该如何设置Java虚拟机JVM启动内存参数?

    jps(JVM Process Status Tool):JVM机进程状况工具 用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等.与unix上的ps类似,用 ...

  6. java arraylist 当参数_关于java:为什么修改了ArrayList参数,但没有修改String参数?...

    本问题已经有最佳答案,请猛点这里访问. public class StackOverFlow { public static void main(String[] args) { ArrayList ...

  7. java main传入参数_向java的main()传入大量参数

    项目中有一些用java写成的可执行的工具,需要调用者传入大量的参数.最开始,我使用的是最传统的方式,直接一个传入参数数组,于是有如下这么壮观的代码: public static void main(S ...

  8. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  9. java请求参数_在Java中发送http的post请求,设置请求参数等等

    前几天做了一个定时导入数据的接口,需要发送http请求,第一次做这种的需求,特地记一下子, 导包 import java.text.SimpleDateFormat; import java.util ...

最新文章

  1. 内核变量——Jiffies
  2. 停止对互联网的意淫吧,它不过是个信息技术啊
  3. AT4353-[ARC101D]Robots and Exits【LIS】
  4. python中不需要函数重载的原因
  5. Android内容提供器——运行权限
  6. Spring+Quartz实现定时任务的配置步骤
  7. 快速修复 Log4j2 远程代码执行漏洞步骤
  8. 艾伟:如何实现用返回值重载
  9. 基于HTTP的QQ协议(转)
  10. WinForm开发(36)——WinForm开发微软官方最全综合详解指南(包括bug出现的可能原因分析及解决方法)
  11. 有关凸集的证明例题_关于凸集、凸函数的一些证明
  12. ios微信H5网页没有声音的解决方法
  13. 【论文解读IJCAI 2019】Extracting Entities and Events as a Single Task Using a Transition-Based NeuralModel
  14. 字体 跨域访问_21个访问量最大的免费字体网站
  15. webpack常见面试题
  16. Vueb报错[WDS] Errors while compiling. Reload prevented
  17. ELF与BIN文件的生成和转换
  18. java动物移动游戏下载安装_疯狂动物园正版下载安装-疯狂动物园游戏下载v1.29.0 安卓官方最新版-2265手游网...
  19. varchar2与varchar2(char)
  20. 《天才基本法》中的P=NP?问题对应算法逻辑

热门文章

  1. windows传文件到linux服务器--- secureCRT PK xftp
  2. Linux的useradd
  3. EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)
  4. 锁——死锁——单个锁锁死
  5. SQL where 条件顺序对性能的影响有哪些
  6. 命令行运行Jmeter实例
  7. DrawWindowFrame
  8. 应用容器Application container
  9. 北京公交公开招标思路
  10. UML总结---UML九种图关系说明