java - 有没有办法将值传递给构造函数中的特定项?

标签 java

如果这是非常基本的内容,我很抱歉,但我在书籍和搜索中找不到任何内容。我试图在创建对象时发送信息,但有很多选项,我只真正更改一个(不幸的是,它接近尾声)。

假设我有这样的东西:

class_to_start_(int maxActive, 
    byte whenExhaustedAction, 
    long maxWait, 
    int maxIdle, 
    int minIdle, 
    boolean testOnBorrow, 
    boolean testOnReturn, 
    long timeBetweenEvictionRunsMillis, 
    int numTestsPerEvictionRun, 
    long minEvictableIdleTimeMillis, 
    boolean testWhileIdle, 
    long softMinEvictableIdleTimeMillis, 
    boolean lifo) 

它们都有默认值,所以我不需要更改它们中的任何一个,但我只想修改最后一个lifo的默认值。我可以在不向其他人发送值的情况下做到这一点吗?理想情况下类似于 class_to_start_('lifo'=True) (这不起作用,我尝试过)。

这可能吗?

最佳答案

Java 没有默认参数值,所以简短的回答是否定的。

但是,您可以重载构造函数,这样您就有一个只接受您想要更改的参数的构造函数:

/** Main constructor. */
public Foo(int maxActive, 
           byte whenExhaustedAction, 
           int minIdle, 
           boolean testOnBorrow, 
           boolean lifo) 

/** Convenience constructor. */
public Foo(boolean lifo)
{
  this(1, 0x01, 3, false, lifo);    // call the main constructor will default values
}

您还可以考虑制作 fluent interface构建器对象。那么你的想法就是:

final Foo f = new FooBuilder().withLifo(false).build();

关于java - 有没有办法将值传递给构造函数中的特定项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440573/

相关文章:

java - 传递类型 Class 的实例而不是 Class 表示的类

java - 如何更改文本文件的分隔符?

java - 您如何确定何时在运行时调用接口(interface)方法?

java - 如何在不使用 Spring 引导和使用单独的 Apache tomcat 服务器的情况下在 Spring WS 中配置双向 SSL 连接?

java - 在两个 Web 应用程序之间共享实例时 Maven Jetty 插件 OutOfMemoryError

java - 在 jfreechart 条形图中设置下限/上限

java - 如何在迭代器标签中使用Struts url标签

java - 如何使用appium java客户端6.1. 0 auto 化Android手机底部的Home,back,up,down,Menu按钮?

java - 使用 64 位 Java 编写服务器是否会因 JVM 堆大小/内存而受到阻碍?

java - 如果未注入(inject)属性,抛出什么类型的异常?