scala运算符作为java中的方法
发布时间:2020-12-16 18:30:50 所属栏目:安全 来源:网络整理
导读:在操作 scala对象(主要来自 scala.collection包)时,操作符重载函数似乎可用于 Java. 即斯卡拉 var s = Set(1,2,3)var t = s + 4var x = s | t 所以在Java中,在eclipse自动完成中查看scala.collection.Set,我可以看到原型 但是我无法正确使用它们 import scal
在操作
scala对象(主要来自
scala.collection包)时,操作符重载函数似乎可用于
Java.
即斯卡拉 var s = Set(1,2,3) var t = s + 4 var x = s | t 所以在Java中,在eclipse自动完成中查看scala.collection.Set,我可以看到原型 但是我无法正确使用它们 import scala.collection.Set; Set<Integer> s = new Set<Integer>(); Set<Integer> t = s.$plus(4); /* compile error with javac,or runtime error with eclipse/* 这些scala方法如何在Java中使用? 解决方法
您似乎无法使用Java中的某些scala接口进行编码!
此代码在Sun和Eclipse中正确编译和执行. 注意在赋值的左侧使用HashSet import scala.collection.HashSet; public class TestCase1 { public static void main(String[] args) { HashSet<String> set2 = new HashSet<String>(); HashSet<String> set4 = set2.$plus("test"); System.out.println(set2.size()); System.out.println(set4.size()); } } 为什么会这样? 我相信这与Scalas继承多个特征的能力有关,这是java eclipse无法理解的. 例如,HashSet扩展了AbstractSet,Set,GenericSetTemplate,SetLike,FlatHashTable,CustomParallelizable,Serializable,其中一些接口是AbstractClasses. .$plus()方法似乎来自SetLike,而不是Set,这可以解释为什么在Set Supertype上调用方法会导致此错误. 那说我仍然不能使用Supertype SetLike来引用HashSet,因为它仍然失败,这就是我可以去的. 我认为这里的主要问题是Elipse以某种方式歪曲Supertype作为那些方法,这是错误的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |