我正在使用一些舊的Java庫,它們使用Scala中未指定類型參數(例如Eclipse draw2d)的集合。Scala與Java庫一起工作,沒有指定集合的類型參數
假設你有一個Java類(即你不能修改)是這樣的:
// A.java
package com.example.test;
import java.util.ArrayList;
public class A extends ArrayList {} // not ArrayList<Object>, just ArrayList
如果你想在Java類A的工作,你可以這樣做:
// B.java
import com.example.test.A;
public class B {
public static void main(String[] args) {
A a = new A();
a.add(1);
}
}
javac B.java
有一些警告成功:
Note: C.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
然而,斯卡拉相同的是IM可能:
// C.scala
import com.example.test.A
object C {
def main(args: Array[String]): Unit = {
val a = new A()
a.add(1)
}
}
scalac C.scala
發出錯誤:
C.scala:6: error: type mismatch;
found : Int(1)
required: E
a.add(1)
^
我如何在Scala中使用這個類?