Tag: scala java interop

scala类中属性的可见性

我通过以下方式在我的类的构造函数中定义了一个属性: class Step(val message:String = “”) 当我尝试从Java代码访问消息值时,会出现可见性错误。 为什么?

从Scala实现具有Raw类型的Java接口

我正在尝试使用Scala为Sonar构建扩展。 我需要扩展以下Java接口: public interface Decorator extends BatchExtension, CheckProject { void decorate(Resource resource, DecoratorContext context); } 但资源类型实际上定义如下: public abstract class Resource 我知道我可以解决创建Java原始超类的问题。 我想坚持Scala-only,也知道我是否缺少一个解决方案,以及是否有一个改进我可以向SonarSource人员建议他们(使用原始类型)。 我已经阅读过这方面存在的问题,以及某些情况下的一些解决方法,但似乎没有适用于此处( 一种解决方法 , 一张明显固定的机票 ,还有2091的机票…)

如何在Java中将java.util.Map转换为scala.collection.immutable.Map?

我发现很多人都试图这样做,并询问这个问题,但问题始终是用scala代码来回答的。 我需要调用一个期望scala.collection.immutable.Map的API,但我有一个java.util.Map,如何在我的java代码中从后者干净地转换为前者? 编译器不同意这种情绪,即它是一种隐式转换,因为当我尝试它时就会对它进行barfs! 谢谢!

Java类中的Scala getter和setter

我想创建一个遵循Scala setters / getters约定的Java类。 我试过跟随简单的类,但它不起作用: public class JavaA { private int a = 0; public int a() { return a; } public void a_$eq(int a) { this.a = a; } } 但是当我尝试从scala访问它时: val x = new JavaA xa = 1 我得到“重新分配给val”错误消息。 我试图寻找这个,但是我发现从scala到java的另一个问题。 这样做的正确方法是什么? 谢谢!

在scala中访问java基类的静态成员

我用Java编写了一些代码。 对于新课程,我打算用Scala编写。 我有一个关于访问基类的受保护的静态成员的问题。 以下是示例代码: Java代码: class Base{ protected static int count = 20; } 斯卡拉码: class Derived extends Base{ println(count); } 有什么建议吗? 如何在不修改现有基类的情况下解决这个问题

JavaConverters asScala方法的时间复杂度

从Scala版本2.9开始,有一个方便的转换器,可以通过编写如下代码将java.util.List和其他集合转换为Scala的数据结构: import scala.collection.JavaConverters._ def scalaVersion = callJavaMethod.asScala 这是一个可爱的小function,因为它允许在与现有Java代码交互时利用Scala的优势。 但是,我不确定所涉及的时间和空间复杂性,并且在官方文档中找不到任何内容,因此,以下问题: 在哪里可以获得有关JavaConverters的复杂性(时间和空间)的信息?

在Scala中使用Java库

我是Scala的新手。 到目前为止,我只能编写基本代码,但我想更具体地开始使用它,而不仅仅是学习理论。 假设我在HelloWorld.java中有以下Java代码: public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello, World”); } } 等效的Scala代码是什么?

使用Java代码中的Scala类型别名

假设我在scala中定义了类型别名 object Foo { type Bar = Option[String] } 看起来我不能像Java那样在Java代码中引用别名(它只是抱怨无法找到符号 ): import Foo.*; public class Cafebabe { void bar(Bar x) { //… } } 我也尝试过静态导入。 (更具体地说,我有javareflection代码,我无法更改,需要知道参数类型,我需要将Bar别名提供给它)。 我知道,我可以在Scala中创建包装器 class BarWrapper(value: Bar) 但也许我错过了其他一些方式?

什么是Scala对象的Java等价物?

在Scala中,我们可以写 object Foo { def bar = {} } 这是如何由编译器实现的? 我可以调用Foo.bar(); 来自Java但new Foo(); 从Java给出错误cannot find symbol symbol: constructor Foo() JVM本身是否支持单例? 是否有可能在Java中有一个没有构造函数的类? 注意:这是scalac -print输出的代码 package { final class Foo extends java.lang.Object with ScalaObject { def bar(): Unit = (); def this(): object Foo = { Foo.super.this(); () } } }

在Java代码中从scala.collection.Seq 转换为java.util.List

我从Java调用Scala方法。 我需要进行从Seq到List的转换。 我无法修改Scala方法的签名,因此我无法使用scala.collection.JavaConversions._的asJavaCollection方法。 有关如何实现这一目标的任何想法? 使用Scala 2.9.3