小编Gar*_*all的帖子

为什么在Java自动转换数字中使用内联条件?

在下面的内联条件中,可能会分别打印一个整数和一个double:

System.out.println(true ? 0 : 0.0);
System.out.println(false ? 0 : 0.0);
System.out.println(true ? new Integer(0) : new Double(0.0));
System.out.println(true ? 0 : "");
Run Code Online (Sandbox Code Playgroud)

相反,它们在一起出现时都被打印为双打:

 0.0
 0.0
 0.0
 0
Run Code Online (Sandbox Code Playgroud)

为什么在内联条件下与其他数字一起出现时会自动转换数字?

编辑:如果发生这种情况,因为System.out.println重载的情况是这样的:

list.add(true ? 0 : 0.0);
list.add(false ? 0 : 0.0);
list.add(true ? new Integer(0) : new Double(0.0));
list.add(true ? 0 : "");
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

输出:

[0.0, 0.0, 0.0, 0]
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
741
查看次数

匹配任何无参数函数作为 scala Mockito 中的参数

我正在尝试验证使用 Mockito 调用以下方法:

class Notifier {
  def forward(request: ServletRequest)(onFailure: => Unit) : Unit
}
Run Code Online (Sandbox Code Playgroud)

这是对模拟的验证:

val notifier = mock[Notifier]
there was one(notifier).forward(any[ServletRequest])(any[() => Unit])
Run Code Online (Sandbox Code Playgroud)

我得到了例外:

   The mock was not called as expected: 
    Invalid use of argument matchers!
    3 matchers expected, 2 recorded.
    This exception may occur if matchers are combined with raw values:
        //incorrect:
        someMethod(anyObject(), "raw String");
    When using matchers, all arguments have to be provided by matchers.
    For example:
        //correct:
        someMethod(anyObject(), eq("String by matcher"));
Run Code Online (Sandbox Code Playgroud)

我知道这是由最后一个无参数函数引起的。如何在此处正确执行验证?

specs scala mocking mockito

5
推荐指数
1
解决办法
2533
查看次数

Singleton模式的替代方案?

我正在尝试设计一种更灵活的Singleton形式.

我想解决的问题如下:

  • 单身人士无法轻易进行测试.
  • 他们滥用面向对象的方法,不允许继承,代码变得线性,许多开发人员倾向于过度使用它们.
  • 它们仅限于一个实例,在重复相同机制的意义上而不重复类本身(例如,ThreadPool作为每个应用程序的单例操作的方式,但每个应用程序都有自己的实例).

现在,我到目前为止提出的解决方案如下:

  • 使Singleton类成为具有内部构造函数的常规公共类(只能由同一个包的类访问).
  • 与每个面向产品的类一样,所有静态属性和静态常量都被移动到一个内部SingletonShared类,该类将作为参数传递给Singleton的构造函数.这两个隐藏在公众背后SingletonFactory,具有静态方法getInstance(key).
  • 在情况下,我们所面对的是更复杂的系统,其中每个单需要它自己的一套独特的参数,我加的静态方法setAdapter(adapter)SingletonFactory.使用该方法getShared(key),实现的类ISingletonAdapter 应该返回该SingletonShared实例的值(例如, SingletonXmlAdapter将Xml文件传递给构造函数,并根据给定的键对某个节点进行反序列化).

以上所有都包装Singleton在一起.

现在,出于测试能力的目的,可以选择将Singleton标记为内部类,并使其实现ISingleton公共接口.

问题:

  1. 这个解决方案可以接受
  2. 是否有更好/更清洁/更短的方法来达到同样的效果?
  3. 哪个版本最好(Singleton作为内部与构造函数作为内部)?

谢谢!

architecture singleton design-patterns

4
推荐指数
1
解决办法
712
查看次数

如何将动作绑定到Intellij中的多个快捷键?

我想绑定一些IntelliJ IDEA快捷键,但同时保留默认绑定,以防任何人想要使用我的IDE(例如结对编程).

有没有办法为IntelliJ IDEA中的一个操作分配多个快捷方式?或者有插件可以做到这一点吗?

keyboard-shortcuts keymapping intellij-idea

4
推荐指数
1
解决办法
697
查看次数

有没有办法在全球范围内监听 Swing 中新打开的窗口?

与我如何在全局范围内监听按键类似,KeyboardFocusManager有没有一种方法可以在全局范围内监听任何打开的(setVisible呼叫)JFrameWindow在 Swing 中?

我可以通过轮询Window.getWindows()来执行此操作,但我想知道是否可以以事件驱动的方式执行此操作。

java swing jframe

3
推荐指数
1
解决办法
144
查看次数

你如何决定在Ruby中调用哪个别名方法?

在Ruby API中,我注意到很多方法都有别名.例如,迭代String我可以调用的行str.linesstr.each_line.

你如何决定使用哪一个?是否有一些别名被弃用并保留历史原因?或者别名只是Ruby哲学的一部分,有许多方法可以做同样的事情并根据可读代码进行选择?

ruby

3
推荐指数
1
解决办法
68
查看次数

在Scala中,可以引用复制语句中复制的对象

有没有办法在复制语句中引用要复制的对象而不必将对象分配给变量?

例如,我可以这样做:

case class Foo(s: String)
val f = Foo("a")
f.copy(s = f.s + "b")
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

case class Foo(s: String)
Foo("a").copy(s = this.s + "b")
Run Code Online (Sandbox Code Playgroud)

scala

3
推荐指数
1
解决办法
331
查看次数

是否有一种模式或技巧来强制评估OR条件语句中的两个表达式?

如果返回,return method1() || method2()不调用的最佳方式(模式)是什么?method2()method1()true

我正在使用这个类绑定一个表:

class Bounds {
    // return true iff bounds changed
    boolean set(int start, int end);
}
Run Code Online (Sandbox Code Playgroud)

我希望此函数调整行和列的大小,并返回true iff被修改:

public boolean resizeToFirstCell(Bounds rows, Bounds columns) {
   return rows.set(0, 1) || columns.set(0, 1);
}
Run Code Online (Sandbox Code Playgroud)

c# c++ java design-patterns

2
推荐指数
2
解决办法
604
查看次数

如何在Ruby中使用给定的方法和方法体动态创建类?

在Ruby中,您如何定义方法

def make_class(method_name, method_body, s_value)

使用以下实现返回一个类

class Anonymous
    def method_name(args)
        method_body(args)
    end

    def to_s
       return s_value
    end
end
Run Code Online (Sandbox Code Playgroud)

如果你可以链接到你发现在基本的Ruby元编程上有用的任何资源,那么这也是很好的.

ruby metaprogramming ruby-on-rails dynamic

2
推荐指数
1
解决办法
374
查看次数

如何在Windows上测试Unix上的java程序?

问题:我正在开发一个在Unix环境中执行某些文件操作的工具,但我的开发环境是Windows,我该如何测试我在做什么.

有什么方法可以模拟我在Unix环境中运行的程序仅用于测试目的吗?

java unix windows

1
推荐指数
1
解决办法
795
查看次数

Java:计算for循环

我现在用Google搜索并尝试各种方法,但没有任何成功.所以对于这个问题,我有这个循环,我输入一个数字"n"ex.10.然后程序从1到10计数.这是我正在使用的循环.

n = Keyboard.readInt();
for(int e = 1; e <=n; e++)          
System.out.println(e);  
Run Code Online (Sandbox Code Playgroud)

这工作正常,但现在我想计算已经在循环中显示的数字所以..它将是1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10(如果'n'被选中作为数字10)它应该给出计算,所以它会说1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55.

如果有人在这里帮助我会很棒.

提前致谢,

迈克尔.

java for-loop

0
推荐指数
4
解决办法
9599
查看次数

有一种简洁的方法可以在Ruby的循环中返回数值迭代器吗?

似乎应该有一个单行方式迭代seasonseasonshow.has_season?评估时返回最后一个false.

def last_season(show)
  season = 1
  season += 1 while show.has_season?(season)
  return season
end
Run Code Online (Sandbox Code Playgroud)

编辑: has_season?涉及HTTP GET调用,因此我无法真正看到使用它进行迭代的简洁方法.

ruby conditional for-loop

0
推荐指数
1
解决办法
52
查看次数

为什么我不能在Scala中从Option到List flatMap?

当我尝试

Some(1).flatMap(_ => List(2))

我明白了

 error: type mismatch;
 found   : List[Int]
 required: Option[?]
Run Code Online (Sandbox Code Playgroud)

但是做得Some(1).map(_ => List(2)).flatten很好.为什么我在第一种情况下遇到编译错误?

functional-programming scala

0
推荐指数
1
解决办法
879
查看次数