小编Itt*_*ayD的帖子

为什么类不能使用相同签名的方法扩展特征?

为什么下面的错误?如何解决它?

编辑:我假设因为A和B编译成(接口,类)对,所以在编译C时选择正确的静态方法调用是一个问题.我希望优先级按顺序排列.

scala> trait A { def hi = println("A") }
defined trait A

scala> trait B { def hi = println("B") }
defined trait B

scala> class C extends B with A
<console>:6: error: error overriding method hi in trait B of type => Unit;
 method hi in trait A of type => Unit needs `override' modifier
       class C extends B with A

scala> trait A { override def hi = println("A") }
<console>:4: error: method hi overrides nothing …
Run Code Online (Sandbox Code Playgroud)

overriding scala traits

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

将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any]

如何将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any],以便将原始映射中的所有值(整数,布尔值等)转换为正确的值在Scala工作得很好.

java scala scala-collections

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

Scala:没有getter就不能写setter?

这有效:

class ButtonCountObserver {
  private var cnt = 0  // private field
  def count = cnt      // reader method
  def count_=(newCount: Int) = cnt = newCount  // writer method
 // ...
}

val b = new ButtonCountObserver 
b.count = 0
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

class ButtonCountObserver {
  private var cnt = 0  // private field
  def count_=(newCount: Int) = cnt = newCount  // writer method
 // ...
}

val b = new ButtonCountObserver 
b.count = 0
Run Code Online (Sandbox Code Playgroud)

我明白了: error: value count is not a …

scala

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

跨类加载器?

我怎样才能做到这一点:

class Foo {
  public static Foo get() throws Exception {
    ClassLoader cl = new URLClassLoader(new URL[]{"foo.jar"}, null); // Foo.class is in foo.jar
    return (Foo)cl.loadClass("Foo").newInstance(); // fails on class cast
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要的是让JVM从cl中考虑Foo实例,就好像它是来自执行代码的类加载器的Foo实例一样.

我见过这些方法,对我来说都没有好处(上面的例子是玩具示例):

  1. 通过类加载器加载类(或单独的接口),类加载器是调用代码和创建的类加载器的父级
  2. 序列化和反序列化对象.

java classloader

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

Maven - 将工件安装到工作空间中的本地存储库

我想有一种方法,'mvn install'将文件放在我的源(checkout)根目录下的存储库文件夹中,同时使用来自〜/ .m2/repository的第三方依赖项.

所以在'mvn install'之后,布局是:

/work/project/
    repository
      com/example/foo-1.0.jar
      com/example/bar-1.0.jar
    foo
      src/main/java
    bar
      src/main/java

~/.m2/repository
    log4j/log4j/1.2/log4j-1.2.jar
Run Code Online (Sandbox Code Playgroud)

(特别是/ work/project/repository不包含log4j)

在本质上,我正在寻找一种创建引用其他存储库的复合存储库的方法

我的目的是能够对同一个源进行多次检出并在每个检查上使用"install"在本地存储库中相互覆盖.多次检查可能是因为在cvs/svn中的不同分支上工作,但在我的情况下,这是由于在git中克隆主分支(在git中,每个克隆就像一个分支).我不喜欢每次结账时使用特殊版本/分类器或每次切换时重新安装(重建)所有内容的替代方案.

maven-2 repository

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

理解为什么"pimp my library"在Scala中以这种方式定义

如果我想在Scala中为类添加方法,我需要执行以下操作:

class RichFoo(f: Foo) {
  def newMethod = f.bar()
}
object RichFoo {
  implicit def foo2Rich(f: Foo) = new RichFoo(f)
}
Run Code Online (Sandbox Code Playgroud)

然后f.newMethod将导致RichFoo实例的创建并调用其方法.

我试图理解为什么它没有像Ruby那样定义:

override class Foo {
  def newMethod = bar
}
Run Code Online (Sandbox Code Playgroud)

编译器可以查看此定义,并使用静态方法newMethod创建一个FooOverride类,该方法获取类型为Foo的参数并调用其bar方法.这就是Scala实现特征的方式.我仍然需要导入包含Foo覆盖的包来使用它.

它似乎涉及较少的输入,不需要我创建名称,并具有更好的性能(不调用方法和创建对象).隐式转换方法所做的任何事情都可以在附加方法中完成.

我确定我错过了一些东西,并想深入了解一下.

scala

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

immutable.Map的惯用"get or else update"?

对于immutable.Map实例,getOrElseUpdate的惯用方法是什么?我使用下面的代码片段,但它似乎冗长而低效

var map = Map[Key, Value]()

def foo(key: Key) = {
  val value = map.getOrElse(key, new Value)
  map += key -> value
  value
}
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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

mockito:有没有办法捕获存根方法的返回值?

如果我模拟一个方法来返回某个对象的新实例,我该如何捕获返回的实例?

例如:

 when(mock.someMethod(anyString())).thenAnswer(new Answer() {
     Object answer(InvocationOnMock invocation) {
         Object[] args = invocation.getArguments();
         Object mock = invocation.getMock();
         return new Foo(args[0])
     }
 });
Run Code Online (Sandbox Code Playgroud)

显然,我可以有一个Foo类型的字段,answer并将其设置为新实例,但是有更好的方法吗?像ArgumentCaptor这样的东西?

java mockito

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

Spring:为类路径资源注入URL

我想以一种不在Bean中创建对Spring的依赖的方式注入类路径资源的URL.意思是,bean不应该使用Spring的接口/类.我怎样才能做到这一点?

java spring

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

O(1)从mutable.Map转换为immutable.Map?

有没有办法在O(1)时间内将可变映射转换(换行)为不可变(也就是说,不是通过复制值,而是类似于在JavaConversions中完成的操作)

scala scala-collections

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