草庐IT

scala-compiler

全部标签

java - Scala 和 Java 泛型——提取和返回嵌套类型

Java泛型可以根据表达式的返回类型推断出泛型类型参数的类型。请考虑以下事项:publicstaticTuncheckedCast(Objecto){return(T)o;}我们可以这样调用它:MapbazbogMap=newHashMap();Stringfoo=uncheckedCast(bazbogMap);这将编译但抛出RuntimeException当它被调用时,因为它会尝试转换Map到String但失败了。但重点是Java推断出的值。基于调用站点的预期结果类型。我们也可以在Scala中使用:defuncheckedCast[T](o:AnyRef):T=o.asInstan

IntelliJIDEA for Scala 中的 Java 字节码反编译器

我使用的是IntellijIDEA终极版。浏览从java源代码编译的.class文件很容易:我只需双击.class文件,IDEA就会反编译它。但是,对于从scala源代码编译的.class文件,它不起作用。似乎IDEA只是引用了scala源文件。我注意到只有在安装了scala插件的情况下,IDEA才会表现得像那样。没有它它工作正常。有没有办法在不关闭scala插件的情况下使用IDEA进行反编译? 最佳答案 最终在Intellij中发布了此功能。来自officialwebsite:YoucandecompileyourScalacod

导致虚拟机故障的 Java 映射/nio/NFS 问题 : "a fault occurred in a recent unsafe memory access operation in compiled Java code"

我已经为特定的二进制格式(nfdump如果有人感兴趣)编写了一个解析器类,它使用了java.nio的MappedByteBuffer。读取每个几GB的文件。二进制格式只是一系列header和大部分固定大小的二进制记录,通过调用nextRecord()将其馈送到被调用方,nextRecord()会推送状态机,完成后返回null。它表现良好。它在开发机器上运行。在我的生产主机上,它可以运行几分钟或几小时,但似乎总是抛出“java.lang.InternalError:afaultoccurredinarecentunsafememoryaccessoperationincompiledJa

java - 收集参数以应用于 Java/Scala 中的柯里化(Currying)函数

我想在Java8中创建一个类,它能够递归地创建一个对象,该对象具有一个根据我添加的参数采用函数参数的方法。例如,我希望能够这样做:newX().param(23).param("someString").param(someObject).apply((Integera)->(Stringb)->(Objectc)->f(a,b,c))然后apply方法会将收集到的参数应用到给定的函数。我觉得这应该可以在保持类型安全的同时无需反射(reflection),但我不太清楚如何做到这一点。如果我可以将其转换为Java8,也欢迎使用Scala中的解决方案。如果不可能,我也会接受解释原因的答案。

java - 如何声明 scala 方法以便可以使用可变参数样式从 Java 调用它

我在Scala库类中有2个简单的方法:classFoo{defbar(args:String*):Unit=println("Foo.barwith:"+args)defbar(args:Array[String]):Unit=bar(args.toSeq:_*)}这一切都很好地编译。然后我将其放入库foo.jar并尝试编译以下Java代码:importFoopublicclassTest{publicstaticvoidmain(String[]args){Foofoo=newFoo();foo.bar("Hello","World");//DOESNOTCOMPILE}}我可以将有

java - 如何将 Java 字节数组转换为 Scala 字节数组?

我是Scala的新手,目前正在从事一个涉及Java和Scala模块的项目。现在我想使用byte[]类型的参数从Java调用Scala方法。Scala方法具有签名:deffoo(data:Array[Byte])Java调用如下所示:foo(x),其中x的类型为byte[]。IDE告诉我这是不可能的:Themethodfoo(Array)inthetypeBarisnotapplicableforthearguments(byte[])作为附加约束,不建议更改Scala方法。在Java方面,我尝试使用Byte[],但这并没有解决问题。一定存在某种转换? 最佳答

java - scala @Serializable 和 Java Serializable 有什么区别?

scala@Serializable的Action方式与JavaSerializable不同吗?我的意思是序列化对象的方式还是两者都使用相同的标准序列化? 最佳答案 Scala可以编译为JVM字节码,所以唯一的区别在于Scala如何实现这种转换。Scala在类型检查期间将注解转换为接口(interface),这可能会导致一些微妙的问题seehere.无论如何,Afaik@Serializable已被弃用-与scala中的其他注释(volatile注释而不是说明符)相比,我无论如何看不到太多优势..不会使代码更清晰或更简单。

java - 运行 Scala jar 文件时出现 NoClassDefFoundError

我有一个带有RemoteActor的小应用程序,我想从中制作一个jar文件。当我尝试执行它时出现此异常:Exceptioninthread"main"java.lang.reflect.InvocationTargetExceptionatsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atsun.reflect.DelegatingMethodAccessorI

java - Json.obj Scala,字符串连接 : Compilation error

我正尝试在Scala中做下一步,我正在使用play2:valstr="another"valr=Json.obj("error_type"->"invalid_request_error","validation_errors"->(Json.obj("code"->"thismode"+str+"doesnotexist","param"->"mode")))但它给了我错误:Type mismatch, expected: (String, Json.JsValueWrapper), actual: String但如果我这样做:valr=Json.obj("error_type"->

java - 使用原语从 Scala 调用 Java vararg 方法

我在Java中有以下代码:publicclassJavaClass{publicstaticvoidmethod(Objectx){}publicstaticvoidvarargsMethod(Object...x){}}当我尝试从Scala访问它时,objectFooUser{JavaClass.method(true)JavaClass.varargsMethod(true)//我得到以下编译错误:typemismatch;found:Boolean(true)required:java.lang.ObjectNote:primitivetypesarenotimplicitlyc