草庐IT

scala-cats

全部标签

Java/Scala 反射 : Get class methods in order and force object init

我有一个类,其中有一些对象作为内部方法。我也问了thisquestion不久前得到了一个很好的答案,但这会导致servlet容器中出现fatalerror。当URLClassLoader请求类时,Scala无法始终如一地生成TypeTag。有问题的项目是开源的,找到here.目前找到的方法是here,但它不保留顺序。对象成员已正确初始化,但顺序是随机的。问题:如何收集类(class)成员:按照定义的顺序以线程安全的方式按父类(superclass)型过滤它们贪心初始化对象(引用module.instance)?更新:不要根据此处的链接建议答案,它们已经过测试并且已知会失败。出于风格原因

java - 在 Spark Scala 中处理微秒

我使用Scala将PostgreSQL表作为数据框导入到spark中。数据框看起来像user_id|log_dt--------|-------96|2004-10-1910:23:54.01020|2017-01-1212:12:14.931652我正在将此数据帧转换为log_dt的数据格式为yyyy-MM-ddhh:mm:ss.SSSSSS。为此,我使用以下代码使用unix_timestamp函数将log_dt转换为时间戳格式。valtablereader1=tablereader1Df.withColumn("log_dt",unix_timestamp(tablereader1

java - 如何设置 IDEA 为混合的 Scala/Java Maven 项目自动配置 Scala 方面?

如何让IntelliJ在混合了Scala和Java源代码的Maven项目中自动配置Scala方面?我正在为MaiaBuild2099使用ScalaPluginNightly。mvncompile和mvntest都在命令提示符和IntelliJ的MavenProjects面板中工作。但是,如果我尝试在IntelliJ中直接运行ScalaSpec,它会显示一个错误对话框无法编译Scala文件,内容为请在Scalafacet中指定编译器。项目目录结构:MixedJavaScala│MixedScalaJava.iml│pom.xml│└───src├───main│├───java││Hel

java - 你如何让java方法注释在scala中工作

我有两个项目,一个scala项目和一个java项目。我的scala项目在构建路径中引用了java项目。在我的java项目中,我声明了以下注释:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceMyAnnotation{publicStringName();}在我的Scala项目中,我正在注释一些方法。即classMyClass{...@MyAnnotation(Name="Blah")defmyMethod(){...}}在某个地方的另一个文件中,我试图提取注释。varmethod

java - 从 Java 调用 Scala 代码?

我正在使用Netbeans编写Scala和Java。Netbeans为Scala项目生成了一个.jar文件。我尝试在Java项目中导入该文件。但是我无法将该.jar文件中的任何类导入到我的Java项目中。我还尝试将scala-library.jar导入java项目,并且可以从该jar导入类。我想用Scala编写我的库,然后公开一个只涉及Java东西的小接口(interface),然后编写一个Java包装器,以便人们可以将它用作Java包。那可能吗?我该怎么做?非常感谢。 最佳答案 这样做应该没有问题。您是否已验证(例如使用WinZi

java - 我如何从 Java 反射调用 Scala 对象上的方法?

我有一个如下定义的scala对象:packagecom.exampleobjectFoo{defbar():String="InterestingResult"}我知道如果Foo在构建和运行时类路径中,我可以从Java调用Foo$.MODULE$.bar(),但在我的情况下Foo不在构建类路径中,可能会也可能不会在运行时类路径中配置。在我的Java代码中,如果运行时类路径中可用,我想使用反射来调用bar(),否则我将回退到默认实现。这有可能吗? 最佳答案 你可以用看起来像这样的代码来做到这一点:packagecom.example.

java - 从 scala 调用重载的 java 泛型方法

我正在使用Mockito通过返回未参数化ArrayList的方法来模拟对象,但我不知道如何让它工作要模拟的方法签名publicjava.util.ArrayListgetX()测试代码varmockee=mock(classOf[Mockee])when(mockee.getX).thenReturn(Lists.newArrayList(x):ArrayList[_])这实际上在IntelliJ中编译得很好,但在运行时抛出:[error]....scala:89:overloadedmethodvaluethenReturnwithalternatives:[error](java.

java - 我可以从 Java 访问 Scala 对象的不带括号的 val 吗?

给定以下Scala对象:objectScalaObject{valNAME="Name"}似乎Scala编译器生成了一个无参数方法来访问NAME字段。但是,当我尝试从Java访问此字段时,访问此字段的唯一方法似乎是作为无参数方法,例如:System.out.println(ScalaObject$.MODULE$.NAME());有没有办法让Scala编译器允许Java按照预期的Java习惯用法访问val:System.out.println(ScalaObject$.MODULE$.NAME); 最佳答案 严格来说,答案是否定的,

Java 与 Scala 泛型和装箱的互操作性问题

假设我有这个Scala特性:traitUnitThingy{defx():Unit}提供Java实现非常简单:importscala.runtime.BoxedUnit;publicclassJUnitThingyimplementsUnitThingy{publicvoidx(){return;}}现在让我们从一个通用特征开始:traitFoo[A]{defx():A}traitBarextendsFoo[Unit]上面的方法行不通,因为x返回的单元现在是装箱的,但解决方法很简单:importscala.runtime.BoxedUnit;publicclassJBarimpleme

java - 在 Scala 中,如何覆盖采用 java.util.Map 的方法

我正在尝试子类化的Java类有如下方法:publicabstractvoidfoo(Mapvar1);我不知道如何覆盖该方法。我从中继承的Java类不使用泛型。在Scala中我试过:overridedeffoo(var1:java.util.Map[Int,Int]){}但是编译器给我的错误信息是它没有覆盖任何东西..问题的核心是Scala需要Map上的类型参数,但是Java类不使用它们。 最佳答案 这将使它工作overridedeffoo(var1:java.util.Map[_,_]){}