scala

java – Scala编译器如何处理具体的trait方法?

这似乎是非常浪费的,因为我可以有几十个实现MyOrdered的具体类,并且它们都将获得相同代码的副本,实际上只需将它直接放在基类MyOrdered中即可.此外,这使得很难创建一个Java友好的ScalaAPI.有没有办法强制Scala编译器将方法定义放在应该这样做的地方,除了使用虚拟方法实现使类具体化?

不会将java.util.List隐式转换为Scala List

我对scala.collection.JavaConversions有非常基本的问题.我会期望以下代码将工作,但从java.util.List[String]到ScalaList[String]的隐式转换不会发生.为什么?我收到compi的消息解决方法转换为:这是因为,转换的隐式函数定义为:它返回一个mutable.Buffer而不是scala.collection.immutable.List.

这些Java文件在scala.runtime中的用途是什么?

在scala.runtime目录中,Scala源代码树中有一些*.java文件.那些文件似乎很简单,G.DoubleRef.java如下所示:有什么理由不能在Scala中定义这些类吗?解决方法也是一个猜测:没有Scala构造编译到公共字段–Scala中的publicvars编译为私有字段和公共访问器和mutator.我想象这些*Ref类被广泛使用,这可以是一个优化,以避免频繁的方法调用,并用直接的字段访问替换它们.

Java和Scala中C#的访问修饰符的等价物是什么?

以前在C#工作过,我现在花了很多时间在Scala和Java上工作.这可能令人困惑,因为这三种语言的访问修饰符使用相似的名称,但并不总是意味着同样的事情.Java和Scala中C#的访问修饰符的等价物是什么?

Files.walkFileTree的并行版本(java或scala)

有没有人知道javaFiles.walkfiletree或类似东西的任何并行等价物?它可以是Java或Scala库.解决方法我们假设在每个文件上执行回调就足够了.这段代码不会处理文件系统中的循环–你需要一个注册表来表明你曾经去过的地方(例如java.util.concurrent.ConcurrentHashMap).您可以添加各种改进,例如报告异常而不是静默忽略它们.使用折叠而不是使用forea

java – 为什么静态成员使语言不像面向对象?

解决方法奥德斯基的陈述是有效和重要的,但有些人不明白他的意思.让我们说在Java中你有一个方法f的类Foo:你可以编写一个接受Foo并在其上调用f的方法:也许有一个类SubFoo扩展了Foo;g也适用于此.可以有一整套类,通过继承或接口相关,它们共享它们可以与g一起使用的事实.现在让我们将f方法设为静态:我们可以使用这个新的Foo和g,也许是这样吗?